Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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"; // 프론트엔드로 리다이렉트할 경로
Expand All @@ -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. 인증 관련 설정값, 쿠키 제거
Expand All @@ -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();
Expand All @@ -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();
}
Expand Down
Loading