diff --git a/ontime-back/src/main/java/devkor/ontime_back/entity/User.java b/ontime-back/src/main/java/devkor/ontime_back/entity/User.java index 0450765..8993fcf 100644 --- a/ontime-back/src/main/java/devkor/ontime_back/entity/User.java +++ b/ontime-back/src/main/java/devkor/ontime_back/entity/User.java @@ -48,6 +48,8 @@ public class User { private String socialId; // 로그인한 소셜 타입의 식별자 값 (일반 로그인인 경우 null) + private String accessToken; // accessToken + private String refreshToken; // refreshToken private String firebaseToken; @@ -126,4 +128,8 @@ public void updateNote(String note) { public void updateFirebaseToken(String firebaseToken) { this.firebaseToken = firebaseToken; } + + public void updateAccessToken(String accessToken) { + this.accessToken = accessToken; + } } \ No newline at end of file diff --git a/ontime-back/src/main/java/devkor/ontime_back/global/generallogin/handler/LoginSuccessHandler.java b/ontime-back/src/main/java/devkor/ontime_back/global/generallogin/handler/LoginSuccessHandler.java index 24fb9dc..7b19764 100644 --- a/ontime-back/src/main/java/devkor/ontime_back/global/generallogin/handler/LoginSuccessHandler.java +++ b/ontime-back/src/main/java/devkor/ontime_back/global/generallogin/handler/LoginSuccessHandler.java @@ -39,7 +39,7 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo // 수정된 부분: 응답 헤더에 AccessToken, RefreshToken 실어서 응답 jwtTokenProvider.sendAccessAndRefreshToken(response, accessToken, refreshToken); - // 수정된 부분: RefreshToken을 User 엔티티에 업데이트 후 저장 + user.updateAccessToken(accessToken); user.updateRefreshToken(refreshToken); userRepository.saveAndFlush(user); diff --git a/ontime-back/src/main/java/devkor/ontime_back/global/jwt/JwtTokenProvider.java b/ontime-back/src/main/java/devkor/ontime_back/global/jwt/JwtTokenProvider.java index f8a5380..6d2349b 100644 --- a/ontime-back/src/main/java/devkor/ontime_back/global/jwt/JwtTokenProvider.java +++ b/ontime-back/src/main/java/devkor/ontime_back/global/jwt/JwtTokenProvider.java @@ -166,6 +166,8 @@ public boolean isTokenValid(String token) { public boolean isAccessTokenValid(String token) { try { + userRepository.findByAccessToken(token) + .orElseThrow(() -> new InvalidAccessTokenException("유효하지 않은 엑세스 토큰입니다.")); JWT.require(Algorithm.HMAC512(secretKey)).build().verify(token); log.info("유효한 엑세스 토큰입니다."); return true; diff --git a/ontime-back/src/main/java/devkor/ontime_back/repository/UserRepository.java b/ontime-back/src/main/java/devkor/ontime_back/repository/UserRepository.java index d74d3e6..d00c55d 100644 --- a/ontime-back/src/main/java/devkor/ontime_back/repository/UserRepository.java +++ b/ontime-back/src/main/java/devkor/ontime_back/repository/UserRepository.java @@ -23,4 +23,6 @@ public interface UserRepository extends JpaRepository { @Query("SELECT u.spareTime FROM User u WHERE u.id = :id") Integer findSpareTimeById(Long id); + + Optional findByAccessToken(String token); } \ No newline at end of file diff --git a/ontime-back/src/main/resources/db/migration/V4__add_field_accesstoken_to_user.sql b/ontime-back/src/main/resources/db/migration/V4__add_field_accesstoken_to_user.sql new file mode 100644 index 0000000..134ef5f --- /dev/null +++ b/ontime-back/src/main/resources/db/migration/V4__add_field_accesstoken_to_user.sql @@ -0,0 +1 @@ +ALTER TABLE user ADD COLUMN access_token VARCHAR(255); \ No newline at end of file