Written on
·
494
1
클라이언트가 로그인 하게되면 JWT를 발급받아 헤더에 이 토큰을 포함시켜서 다음 요청을 보내는 걸로 알고있습니다.
수업에서는 signin 메서드에서 token을 리턴해준 뒤에 직접 postman의 Authorization에 있는 Bearer Token 부분에 삽입해준 뒤에 다음 요청을 보냈는데
singin 메서드에서 리턴받은 token을 최종적으로 리턴하기만 하면
클라이언트에서 그 토큰을 자동으로 헤더에 포함시켜서 다음요청을 보내는 것인지 궁금합니다.
아니면 이 토큰을 프론트엔드단에서 받아서 다른 처리가 필요한지 궁금합니다.
Answer 1
0
안녕하세요! 좋은 질문입니다.
사실 여러가지 방법이 있습니다. 실제 실무에서는 프로젝트 구조에 맞게 여러 보안적인 것을 고려해서 프로세스를 설계합니다.
1. 헤더 Authorization 필드에 넣어주거나,
2. 헤더 쿠키에 httponly로 넣어주거나
3. 바디에 넣어주거나
또한 access token 뿐만 아니라 refresh token을 사용해서 설계하는 경우도 있습니다.
클라이언트에서는 백엔드에서 발급받은 토큰을 헤더에 넣어서 보내거나 쿠키에 넣어서 보냅니다.
저희 프로젝트의 경우는 클라이언트에서 헤더에 넣어서 보내주면 백엔드에서 파싱을 해서 인증처리를 합니다.
답변 감사합니다.
답변해주신데로 로그인시(user모듈)에 access token을 response에 쿠키에 넣어서 전달하니 브라우저 쿠키에 성공적으로 저장되는 것을 확인했습니다.
한 가지만 더 여쭤보고싶은게 있습니다. ㅠ_ㅠ
쿠키에 토큰을 가진 상태로 메인 페이지주소로 get 요청이 들어왔을 때는 app컨트롤러에서 메인페이지를 렌더링 하게 되는데, 이때, 로그인이 되어있는지 확인하기 위해서 app 컨트롤러에서 JwtService를 사용하여 request의 쿠키에 있는 token을 verify하려면
JwtService를 app 모듈에도 등록해주어야 하는데 제가 생각한 방법은 user모듈처럼 똑같이 JwtModule을 등록하고 JwtStrategy를 provider에 넣어주는 건데 이 방법이 맞는건지 모르겠습니다. 혹시 user모듈에 이미 등록된 JwtModule을 불러올 수 있는 방법이 있다면 알고싶습니다. 제 구글링 실력이 아직 부족하여 찾지 못했습니다... ㅠㅠ
위 코드는 현재 app 컨트롤러의 메인 페이지를 렌더링하는 코드입니다.