Skip to content

✨ Feat: 회원 AccessToken 만료 시, RefreshToken 활용한 재발급 및 재로그인 유도 기능 구현#26

Merged
Bumnote merged 3 commits intodevfrom
feat/token-reissue
Apr 28, 2025
Merged

✨ Feat: 회원 AccessToken 만료 시, RefreshToken 활용한 재발급 및 재로그인 유도 기능 구현#26
Bumnote merged 3 commits intodevfrom
feat/token-reissue

Conversation

@Bumnote
Copy link
Copy Markdown
Member

@Bumnote Bumnote commented Apr 28, 2025

#️⃣ 연관된 이슈

#20

📝 작업 내용

  • refreshToken 활용한 회원 AccessToken 재발급 로직을 구현했습니다.
    • JwtAuthenticationFilter에서 만료된 AccessToken을 가지는 회원의 reissue 엔드포인트의 접근을 허용하도록 구현했습니다.
    • USER 자격만 접근 가능한 Controller에서 Authentication 정보를 reissue 서비스로 넘깁니다.
    • refreshToken이 유효한 경우, 회원의 kakaoId를 활용하여 AccessToken과 refreshToken을 재발급합니다.
    • refreshToken이 유요하지 않은 경우, 예외를 반환하며 프론트엔드 단에서 이를 받아 재로그인을 유도합니다.
  • 원활한 로직 구현 및 테스트 진행을 위해서 이미 구현된 코드의 일부를 수정했습니다.
  • refreshToken 유효성을 활용한 예외 반환 및 토큰 재발급 과정의 테스트를 진행했습니다.

💬 리뷰 요구사항

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요


Bumnote added 3 commits April 28, 2025 16:45
- JwtAuthenticationFilter -> MemberController -> MemberService
- 회원 AccessToken 유효시간이 지나 프론트 단에서 reissue 엔드포인트를 호출합니다.
- 만료된 AccessToken 및 회원 자격 증명을 Controller 단으로 넘기기 위해서 Filter 내에서 분기시킵니다.
- USER 자격만 허용하는 reissue 엔드포인트 Controller에서 회원의 카카오 Id를 Service로 넘깁니다.
- Service에서 refreshToken이 Redis DB 내에 존재하는지 체크합니다.
- 유효한 refreshToken이 존재하는 경우 -> 새로운 회원 AccessToken과 RefreshToken을 발급하여 Update합니다.
- 유효하지 않은 refreshToken인 경우 -> 예외를 반환하고, 재로그인을 유도합니다.

issue #20
- AccessToken 및 RefreshToken 예외를 위해서 validate 메소드를 분리했습니다.(validateAccessToken, validateRefreshToken)
- Subject 값을 UUID 랜덤 문자열로 저장해줌으로써 refreshToken이 동일하게 생성되는 이슈를 해결했습니다.
- luckyMessageService 내의 luckyMessages 문자열 배열에 접근하기 위해서 Getter 어노테이션을 추가했습니다.
- 테스트를 원활하게 진행하기 위해서 TypingController 단에서 authentication을 Service로 넘기도록 변경했습니다.

issue #20
- refreshToken 활용하여 회원 AccessToken 재발급하는 테스트를 진행했습니다.
- refreshToken이 만료된 경우, EXPIRED_REFRESH_TOKEN 예외가 발생합니다.
- refreshToken이 유효하지 않은 경우, INVALID_REFRESH_TOKEN 예외가 발생합니다.
- 모든 상황을 만족하는 경우, 새로운 AccessToken과 refreshToken을 발급하여 AccessToken은 반환, refreshToken은 redis에 업데이트합니다.

issue #20
@Bumnote Bumnote requested a review from kyubumjang April 28, 2025 08:11
@Bumnote Bumnote self-assigned this Apr 28, 2025
@Bumnote Bumnote merged commit d47c5ec into dev Apr 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feat] 회원 JWT 토큰 만료 시, 토큰 재발급 및 재로그인 유도 기능 구현

1 participant