섹션 6. 로그인 처리1
@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)을 사용하여 쿠키를 만료시키는 과정 및 이와 관련된 흔한 의문에 대한 해명이 이루어집니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
이미지 업로드와 db 트랜잭션 묶는법
0
40
1
Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4
0
45
2
MessageSourceTest 코드
0
46
1
인터셉터 에러 설정
0
47
1
resolveArgument()메서드 질문
0
54
1
43강 검증1 에서 실패 로직 관련 질문있습니다.
0
52
2
타임리프 3.X 버전 rendering, serializer 에러 해결 방법
2
130
3
스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ
0
86
3
pdf 오타 문의
0
54
1
ItemUpdateForm 검증 관련 질문입니다.
0
46
1
22page 링크 주소 변경
0
55
2
특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문
0
52
1
섹션3번 수업에 대한 질문입니다.
0
78
2
@Autowired 보다 더 좋은 방법이 어떤 걸까요?
0
84
2
타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.
0
63
1
자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다
0
140
3
스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문
0
62
1
톰캣 에러 페이지가 안보입니다.
0
98
2
apiEceptionController에서 센드 에러 호출하면 안되는지?
0
80
1
세션 타임아웃시 쿠키 삭제 방법이 없나요?
0
116
2
ApiExceptionController 질문드립니다.
0
62
1
셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?
0
64
1
MemberRepository 필드의 fianl 선언 유무
0
83
2
혹시 index.html 에서는 fragment 사용이 안되는건가요
0
57
1





