diff --git a/src/main/java/Gotcha/common/jwt/token/JwtHelper.java b/src/main/java/Gotcha/common/jwt/token/JwtHelper.java index 60327388..3a8052ea 100644 --- a/src/main/java/Gotcha/common/jwt/token/JwtHelper.java +++ b/src/main/java/Gotcha/common/jwt/token/JwtHelper.java @@ -40,9 +40,12 @@ private TokenDto getTokenDto(User user, Long userId, String username) { String accessToken = TOKEN_PREFIX + tokenProvider.createAccessToken(role, userId, username); String refreshToken = tokenProvider.createRefreshToken(role, userId, username); + LocalDateTime accessTokenExpiredAt = tokenProvider.getExpiryDate( + accessToken.replace(TOKEN_PREFIX, "").trim() + ); refreshTokenService.saveRefreshToken(username, refreshToken); - return new TokenDto(accessToken, refreshToken); + return new TokenDto(accessToken, refreshToken, accessTokenExpiredAt); } public TokenDto reissueToken(String refreshToken) { @@ -58,11 +61,14 @@ public TokenDto reissueToken(String refreshToken) { String newAccessToken = TOKEN_PREFIX + tokenProvider.createAccessToken(role, userId, username); String newRefreshToken = tokenProvider.createRefreshToken(role, userId, username); + LocalDateTime newAccessTokenExpiredAt = tokenProvider.getExpiryDate( + newAccessToken.replace(TOKEN_PREFIX, "").trim() + ); refreshTokenService.deleteRefreshToken(refreshToken); refreshTokenService.saveRefreshToken(username, newRefreshToken); - return new TokenDto(newAccessToken, newRefreshToken); + return new TokenDto(newAccessToken, newRefreshToken, newAccessTokenExpiredAt); } public void removeToken(String accessToken, String refreshToken, HttpServletResponse response) { diff --git a/src/main/java/Gotcha/domain/auth/controller/AuthController.java b/src/main/java/Gotcha/domain/auth/controller/AuthController.java index 4c485b88..eebf772c 100644 --- a/src/main/java/Gotcha/domain/auth/controller/AuthController.java +++ b/src/main/java/Gotcha/domain/auth/controller/AuthController.java @@ -100,6 +100,7 @@ public ResponseEntity signOut(@RequestHeader(value = ACCESS_HEADER_VALUE, req private ResponseEntity createTokenRes(TokenDto tokenDto) { Map responseData = new HashMap<>(); responseData.put("accessToken", tokenDto.accessToken()); + responseData.put("expiredAt", tokenDto.accessTokenExpiredAt()); return ResponseEntity.ok() .header(HttpHeaders.SET_COOKIE, diff --git a/src/main/java/Gotcha/domain/auth/dto/TokenDto.java b/src/main/java/Gotcha/domain/auth/dto/TokenDto.java index 7620e1b6..75548eb6 100644 --- a/src/main/java/Gotcha/domain/auth/dto/TokenDto.java +++ b/src/main/java/Gotcha/domain/auth/dto/TokenDto.java @@ -1,10 +1,13 @@ package Gotcha.domain.auth.dto; +import java.time.LocalDateTime; + public record TokenDto( String accessToken, - String refreshToken + String refreshToken, + LocalDateTime accessTokenExpiredAt ) { - public static TokenDto of(String accessToken, String refreshToken) { - return new TokenDto(accessToken, refreshToken); + public static TokenDto of(String accessToken, String refreshToken, LocalDateTime accessTokenExpiredAt) { + return new TokenDto(accessToken, refreshToken, accessTokenExpiredAt); } } \ No newline at end of file