해결된 질문
작성
·
81
0
@PostMapping("/logout")
public String logout(HttpServletResponse response) {
expired(response, "memberId");
return "/";
}
private void expired(HttpServletResponse response, String cookieName) {
Cookie cookie = new Cookie(cookieName, null);
cookie.setMaxAge(0);
response.addCookie(cookie);
}
로그아웃 할 때, 쿠키에 setMaxAge(0)으로 쿠키를 날리는 것은 이해가 되는데, 쿠키를 새로 만들어서 보내는 이유는 뭔가요? 원래 있던 쿠키의 setMaxAge(0)으로 바꾸는 것도 아니고, new Cookie를 만들어서, 새로 만든 쿠키의 기간을 0으로 맞추는데 어째서 원래 있던 쿠키가 사라지는 건지 모르겠습니다!
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
권정익님의 질문에 대한 답변으로, 로그아웃 시 쿠키 처리 방법에 대해 궁금해하시는 것 같습니다. 이와 관련하여 쿠키의 setMaxAge(0)
을 설정하여 쿠키를 만료시키는 메커니즘에 대해서 설명드리겠습니다.
웹 애플리케이션에서 로그아웃 기능을 구현할 때, 서버가 클라이언트(웹 브라우저)에 저장된 쿠키를 제거하도록 지시하기 위해 사용하는 일반적인 방법입니다. setMaxAge(0)
을 이용하여 쿠키의 유효 기간을 0으로 설정함으로써, 브라우저는 해당 쿠키를 즉시 삭제하도록 유도됩니다. 여기서 중요한 점은, 쿠키를 “삭제”하는 직접적인 방법이 존재하지 않으므로, 대신 쿠키의 유효 기간을 만료시키는 방법으로 접근하는 것입니다.
그런데, 이 과정에서 신규 Cookie
객체를 생성하여 같은 이름을 사용하는 이유는, HTTP 쿠키가 작동하는 방식 때문입니다. 쿠키는 클라이언트에 저장되며 서버로 전송되는 것이기 때문에, 쿠키의 속성을 변경하기 위해서는 서버에서 새로운 쿠키를 ‘설정’해야 하며, 이 쿠키가 전송된 후 클라이언트 측에서 이전 쿠키와 동일한 이름의 쿠키를 대체하게 됩니다. 따라서 쿠키의 setMaxAge(0)
설정은 사실상 기존 쿠키를 대체하기 위해 새로운 쿠키를 생성하고 전송하는 과정을 통해 이루어집니다.
아래는 비승한 질문에 대한 답변 링크입니다. 관련 질문으로, 로그아웃 시 쿠키 처리 방법에 대한 추가적인 설명과 예시를 찾아보실 수 있습니다.
- logout 과 관련한 질문이 있습니다.에서 로그아웃 시 쿠키 처리 방법에 대한 설명 및 예시를 확인할 수 있습니다. 이 답변에서는 setMaxAge(0)
을 사용하여 쿠키를 만료시키는 과정 및 이와 관련된 흔한 의문에 대한 해명이 이루어집니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.