From ad2c34b9220fd759b160dcb74873a298ca00e643 Mon Sep 17 00:00:00 2001 From: junho <2171168@hansung.ac.kr> Date: Tue, 9 Sep 2025 17:12:58 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=BF=A0=ED=82=A4=EC=97=90=20=EC=97=91?= =?UTF-8?q?=EC=84=B8=EC=8A=A4=20=ED=86=A0=ED=81=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/oauth/OAuth2SuccessHandler.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/DecodEat/global/config/oauth/OAuth2SuccessHandler.java b/src/main/java/com/DecodEat/global/config/oauth/OAuth2SuccessHandler.java index fd2a469..358a427 100644 --- a/src/main/java/com/DecodEat/global/config/oauth/OAuth2SuccessHandler.java +++ b/src/main/java/com/DecodEat/global/config/oauth/OAuth2SuccessHandler.java @@ -24,6 +24,7 @@ public class OAuth2SuccessHandler extends SimpleUrlAuthenticationSuccessHandler { public static final String REFRESH_TOKEN_COOKIE_NAME = "refresh_token"; + public static final String ACCESS_TOKEN_COOKIE_NAME = "access_token"; public static final Duration REFRESH_TOKEN_DURATION = Duration.ofDays(14); public static final Duration ACCESS_TOKEN_DURATION = Duration.ofHours(1); public static final String REDIRECT_PATH = "/oauth2/redirect"; // 프론트엔드로 리다이렉트할 경로 @@ -48,8 +49,10 @@ public void onAuthenticationSuccess(HttpServletRequest request, HttpServletRespo saveRefreshToken(user.getId(), refreshToken); addRefreshTokenToCookie(request, response, refreshToken); - // 2. 액세스 토큰 생성 -> 리다이렉트 경로에 파라미터로 추가 + // 2. 액세스 토큰 생성 String accessToken = tokenProvider.generateToken(user, ACCESS_TOKEN_DURATION); + addAccessTokenToCookie(request, response, accessToken); + String targetUrl = getTargetUrl(accessToken); // 3. 인증 관련 설정값, 쿠키 제거 @@ -68,6 +71,14 @@ private void saveRefreshToken(Long userId, String newRefreshToken) { refreshTokenRepository.save(refreshToken); } + private void addAccessTokenToCookie(HttpServletRequest request, HttpServletResponse response, String accessToken) { + int cookieMaxAge = (int) ACCESS_TOKEN_DURATION.toSeconds(); + CookieUtil.deleteCookie(request, response, ACCESS_TOKEN_COOKIE_NAME); + CookieUtil.addCookie(response, ACCESS_TOKEN_COOKIE_NAME, accessToken, cookieMaxAge); + } + + + // 생성된 리프레시 토큰을 쿠키에 저장 private void addRefreshTokenToCookie(HttpServletRequest request, HttpServletResponse response, String refreshToken) { int cookieMaxAge = (int) REFRESH_TOKEN_DURATION.toSeconds(); @@ -83,8 +94,7 @@ private void clearAuthenticationAttributes(HttpServletRequest request, HttpServl // 액세스 토큰을 리다이렉트 경로에 파라미터로 추가 private String getTargetUrl(String token) { - return UriComponentsBuilder.fromUriString("/decodeat.netlify.app") //todo:로그인 후 스웨거화면 - .queryParam("token", token) + return UriComponentsBuilder.fromUriString("decodeat.netlify.app") //todo:로그인 후 스웨거화면 .build() .toUriString(); }