From 9fb042ff8f29c6dabfda22d80e71985801c14428 Mon Sep 17 00:00:00 2001 From: JeongHeumChoi <79458446+JeongHeumChoi@users.noreply.github.com> Date: Fri, 3 May 2024 18:23:18 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80=20[Deploy]=20-=20=EB=A1=9C?= =?UTF-8?q?=EA=B7=B8=EC=95=84=EC=9B=83=20=EC=8B=9C=20=EC=BF=A0=ED=82=A4=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EB=B0=98=EC=98=81=20(#175)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: 코드 스타일 수정 (#154) * Chore: 불필요한 부분 삭제 (#157) * 🐛 [Fix] - 작업 목록 API 수정 (#158) * refactor: 코드 스타일 수정 * fix: Work 생성 날짜 기준으로 내림차순 설정 * 🐛 [Fix] - PeerReview 단계 예외처리 (#160) * refactor: 코드 스타일 수정 * fix: Work 생성 날짜 기준으로 내림차순 설정 * fix: PeerReview일 경우 추가 * Chore: discord command 이름 변경 (#163) * Hotfix: 비밀번호 인증 로직 추가 (#165) * 🖊️ [Chore] - README 수정 (#168) * refactor: 코드 스타일 수정 * fix: Work 생성 날짜 기준으로 내림차순 설정 * fix: PeerReview일 경우 추가 * Chore: 프로젝트 readme 꾸미기 * 🖊️ [Chore] - README 수정 (#169) * refactor: 코드 스타일 수정 * fix: Work 생성 날짜 기준으로 내림차순 설정 * fix: PeerReview일 경우 추가 * Chore: 프로젝트 readme 꾸미기 * chore: README 수정 * 🐛 [Fix] - 백로그 타임라인 API (#171) * refactor: 코드 스타일 수정 * fix: Work 생성 날짜 기준으로 내림차순 설정 * fix: PeerReview일 경우 추가 * Chore: 프로젝트 readme 꾸미기 * chore: README 수정 * fix: R&R 정렬 오류 해결 * 🐛 [Fix] - 로그아웃 시 쿠키 삭제 (#174) * refactor: 코드 스타일 수정 * fix: Work 생성 날짜 기준으로 내림차순 설정 * fix: PeerReview일 경우 추가 * Chore: 프로젝트 readme 꾸미기 * chore: README 수정 * Fix: 로그아웃 시, 쿠키 삭제 코드 수정 --------- Co-authored-by: Lim jeong woo --- .../logout/CustomLogoutResultHandler.java | 6 +++++ .../startup_valley/util/CookieUtil.java | 25 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/main/java/goormthon/team28/startup_valley/security/handler/logout/CustomLogoutResultHandler.java b/src/main/java/goormthon/team28/startup_valley/security/handler/logout/CustomLogoutResultHandler.java index 7c3f7d8..1bc0911 100644 --- a/src/main/java/goormthon/team28/startup_valley/security/handler/logout/CustomLogoutResultHandler.java +++ b/src/main/java/goormthon/team28/startup_valley/security/handler/logout/CustomLogoutResultHandler.java @@ -8,6 +8,7 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; import org.springframework.stereotype.Component; @@ -17,12 +18,17 @@ @Slf4j @Component public class CustomLogoutResultHandler implements LogoutSuccessHandler { + + @Value("${server.domain}") + private String domain; + @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { if (authentication == null){ log.info("인증 정보가 존재하지 않습니다. authentication is null.."); AuthenticationResponse.makeFailureResponse(response, ErrorCode.NOT_FOUND_USER); } + CookieUtil.logoutCookie(request, response, domain); CookieUtil.deleteCookie(request, response, Constants.ACCESS_COOKIE_NAME); CookieUtil.deleteCookie(request, response, Constants.REFRESH_COOKIE_NAME); AuthenticationResponse.makeSuccessResponse(response); diff --git a/src/main/java/goormthon/team28/startup_valley/util/CookieUtil.java b/src/main/java/goormthon/team28/startup_valley/util/CookieUtil.java index 726627c..93ddb69 100644 --- a/src/main/java/goormthon/team28/startup_valley/util/CookieUtil.java +++ b/src/main/java/goormthon/team28/startup_valley/util/CookieUtil.java @@ -1,5 +1,6 @@ package goormthon.team28.startup_valley.util; +import goormthon.team28.startup_valley.constants.Constants; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -17,6 +18,29 @@ public static void addCookie(HttpServletResponse response, String domain, String response.addHeader("Set-Cookie", cookie.toString()); } + + public static void logoutCookie(HttpServletRequest request, HttpServletResponse response, String domain) { + Cookie[] cookies = request.getCookies(); + if (cookies == null) + return; + + for (Cookie cookie : cookies) { + boolean isAccessCookie = cookie.getName().equals(Constants.ACCESS_COOKIE_NAME); + boolean isRefreshCookie = cookie.getName().equals(Constants.REFRESH_COOKIE_NAME); + + if (isAccessCookie || isRefreshCookie) { + ResponseCookie tempCookie = ResponseCookie.from(cookie.getName(), cookie.getValue()) + .path("/") + .domain(domain) + .secure(true) + .maxAge(0) + .httpOnly(isRefreshCookie) + .build(); + response.addHeader("Set-Cookie", tempCookie.toString()); + } + } + } + public static void addSecureCookie(HttpServletResponse response, String domain, String key, String value, Integer maxAge){ Cookie cookie = new Cookie(key, value); cookie.setPath("/"); @@ -26,6 +50,7 @@ public static void addSecureCookie(HttpServletResponse response, String domain, cookie.setMaxAge(maxAge); response.addCookie(cookie); } + public static void deleteCookie(HttpServletRequest request, HttpServletResponse response, String name){ Cookie[] cookies = request.getCookies(); if (cookies == null){