개발자

jwt 리플레시 토큰은 어디서 언제 데이터베이스에 저장할까요?

2024년 01월 24일조회 1,309

사수가 없는 상태에서 블로그 글들을 보고 어떻게 어떻게 jwt 토큰 발행까지 해냈습니다. 1차 로그인 하면 아이디 비밀번호를 받고 아이디로 검증후 토큰을 발급해서 웹페이지로 전달했는데요 블로그에는 그 추후의 로직에 대한 설명을 찾기가 어렵더라구요 ㅠ JwtTokenProvider 클래스에서 generateToken 메서드에서 에세스 토큰과 리플레시 토큰을 생성하는데 이때 데이터베이스에 이미 있는지 검사하고 저장하는건지? JwtAuthenticationFilter클래스에서 doFilter 메서드에서 저장하는지 그런데 이부분은 저같은 경우에는 GenericFilterBean 을 상속 받았는데 이런 방법을 사용하는 예시 에서는 UsernamePasswordAuthenticationFilter 을 상속받아서 사용하더라구요 지금 막힌 부분이 토큰이 DB에 저장을 어디서 하는지 그리고 아직 토큰유효가 끝나면 리플레시 토큰 요청과 검증후 에세스 재발급 이 남아 있습니다. 어떤 흐름으로 풀어야하는지 알려주세요 ㅠ

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

인기 답변

장성호님의 프로필 사진

JWT에서 액세스 토큰은 DB에 보통 저장하지 않습니다. 리프레쉬 토큰만 저장하셔도 됩니다. 추가로 RTR 정도 하면 좋겠네요. 스프링을 사용하시는 것으로 보입니다. 보통은 JwtFilter 내에서 먼저 Jwt 만료 시간을 체크합니다. 만료되지 않았다면 payload에 담긴 유저 관련 유니크 값을 보고, 그 값이 DB에 존재하는지 확인합니다. 존재한다면 인증된 사용자로 간주합니다. Refresh는 디비 내의 Refresh 토큰과 일치하는지 확인하고 액세스 토큰을 재발급 해주는 별도의 API를 보통 사용합니다.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!