@@ -54,18 +54,15 @@ public void saveRefreshToken(Long userId, String refreshToken) {
5454 public TokenResponse refreshAccessToken (HttpServletRequest request ,
5555 HttpServletResponse response ) {
5656
57- // 1. Cookie에서 refreshToken 추출
5857 String refreshToken = extractRefreshToken (request );
5958
60- // 1-1. JWT 서명 검증 (DB 조회 전)
6159 Long jwtUserId ;
6260 try {
6361 jwtUserId = jwtProvider .getUserId (refreshToken , "refresh" );
6462 } catch (JwtException | IllegalArgumentException | CustomException e ) {
6563 throw new CustomException (ErrorCode .REFRESH_TOKEN_INVALID );
6664 }
6765
68- // 2. DB 조회
6966 RefreshToken savedToken = refreshTokenMapper .findByToken (refreshToken )
7067 .orElseThrow (() ->
7168 new CustomException (ErrorCode .REFRESH_TOKEN_INVALID )
@@ -75,10 +72,8 @@ public TokenResponse refreshAccessToken(HttpServletRequest request,
7572 throw new CustomException (ErrorCode .REFRESH_TOKEN_INVALID );
7673 }
7774
78- // 3. 만료 체크
7975 if (savedToken .getExpiresAt ().isBefore (Instant .now ())) {
80- // 만료된 토큰은 즉시 삭제 후 예외 반환 (rotation 로직 미진입)
81- refreshTokenMapper .deleteByToken (refreshToken ); // 만료 토큰 정리
76+ refreshTokenMapper .deleteByToken (refreshToken );
8277 throw new CustomException (ErrorCode .REFRESH_TOKEN_EXPIRED );
8378 }
8479
@@ -88,30 +83,24 @@ public TokenResponse refreshAccessToken(HttpServletRequest request,
8883 throw new CustomException (ErrorCode .REFRESH_TOKEN_INVALID );
8984 }
9085
91- // 4. 기존 refreshToken 폐기 (Rotation 로직 진입)
9286 int deletedCount = refreshTokenMapper .deleteByToken (refreshToken );
9387 if (deletedCount == 0 ) {
9488 throw new CustomException (ErrorCode .REFRESH_TOKEN_INVALID );
9589 }
9690
97- // 5. 새 Access + Refresh 발급
9891 TokenResponse accessToken = jwtIssuer .issueAccessToken (userId );
9992
100- // 6. 새 refreshToken 발급
10193 String newRefreshToken = jwtIssuer .issueRefreshToken (userId );
10294
103- // 7. DB 저장
10495 saveRefreshToken (userId , newRefreshToken );
10596
106- // 8. 새 refreshToken 쿠키 설정
10797 response .addCookie (CookieUtils .createRefreshTokenCookie (
10898 newRefreshToken ,
10999 jwtProperties .refreshExpirationSeconds (),
110100 cookieSecure
111101 )
112102 );
113103
114- // 9. accessToken만 반환
115104 return accessToken ;
116105 }
117106
0 commit comments