: 서버에서 쿠키를 삭제할 수 없음
: 클라이언트에 똑같은 이름의 쿠키를 또 만들 수 없음
-> 삭제하려는 쿠키와 같은 이름을 가진 쿠키를 생성하고 setMaxage() 메서드를 이용해 유효기간을 0으로 지정해 클라이언트로 반환
// 로그아웃
@PostMapping("/signout")
public ApiResponseDto signout(HttpServletRequest request, HttpServletResponse response) {
jwtUtil.expireCookie(request, response);
return new ApiResponseDto("로그아웃 완료", HttpStatus.OK.value());
}
public void expireCookie(HttpServletRequest request, HttpServletResponse response) {
Cookie[] cookies = request.getCookies();
if(cookies != null) {
log.info(cookies.toString());
for (Cookie cookie : cookies) {
if (cookie.getName().equals(AUTHORIZATION_HEADER)) {
log.info(cookie.getValue());
Cookie newCookie = new Cookie(AUTHORIZATION_HEADER, null);
newCookie.setMaxAge(0);
response.addCookie(newCookie);
}
}
}
}
(참고 : https://enai.tistory.com/28)
@CookieValue를 이용해 본 코드
@PostMapping("/signout")
public ApiResponseDto signout(@CookieValue(value = AUTHORIZATION_HEADER) String cookie, HttpServletResponse response) {
jwtUtil.expireCookie(cookie, response);
return new ApiResponseDto("로그아웃 완료", HttpStatus.OK.value());
}
public void expireCookie(String cookie, HttpServletResponse response) {
if (!cookie.isEmpty()) {
log.info(cookie);
Cookie newCookie = new Cookie(AUTHORIZATION_HEADER, null);
newCookie.setMaxAge(0);
response.addCookie(newCookie);
}
}
로그인 할 때는 postman에 자동으로 cookie추가가 됐는데 로그아웃을 할 때는 자동으로 변경되지 않았다.
질문드리고 업데이트 할 예정