사용자가 연결된 HttpSession
개체가 있고 응용 프로그램에서 "로그 아웃"하려는 경우 HttpSession
을 무효화하면 맵에서 ServletContext가 모든 세션을 유지합니다. 그러나 이것은 서버 측에서만 제거합니다. 클라이언트 측에서 어떤 일이 발생합니까? 사용자는 여전히 세션 ID가 더 이상 서버에 상응하는 세션 객체를 가지고 있지 않은 쿠키를 계속 유지하고 이것을 웹 서버에 계속 보냅니 까? 그리고 사용자가 로그 아웃 한 후 다시 로그인하기를 원하면 어떻게됩니까?세션 무효화
세션 무효화
답변
sessionId 쿠키는 계속 보관되지만이 sessionId는 서버 메모리의 세션 개체와 일치하지 않기 때문에 다음에 사용자가 다시 로그인하려고 시도 할 서버에 의해 삭제됩니다. 서버 쪽에서는 매우 투명 해지며 request.getSession()은 새로운 세션 객체를 자동으로 반환합니다.
Okey하지만 이전 쿠키는 유효하지 않을 때까지 남아 있습니까? – user626912
브라우저 구현에 따라 다르지만 대부분의 경우 만료 될 때까지 쿠키가 유지됩니다. 만료 시간은 tomcat의 config와 같이 서버에 의해 결정됩니다.
답글에 을 추가하고 싶습니다. maksimov.
쿠키가 클라이언트 측에서 계속 존재하더라도 서버가 클라이언트 측에서도 쿠키를 삭제할 수 있습니다. Spring Security는 사용자가 로그 아웃 할 때이를 수행합니다.
이Cookie cookie = new Cookie(cookieName, null);
String cookiePath = //cookie's path
cookie.setPath(cookiePath);
cookie.setMaxAge(0);
response.addCookie(cookie);
중요한 명령은 cookie.setMaxAge(0)
입니다 : 여기에 코드입니다. 최대 수명을 0으로 설정하면 쿠키를 삭제해야합니다. 따라서 서버는 클라이언트에게 max age가 0 인 동일한 쿠키를 보내어 쿠키를 삭제하도록 요청할 수 있습니다.
클라이언트 측 코키도 무효화 할 수 있습니다. –
사용자가 sessionId를 다시 연결하려고 시도하면 세션이 연결되지 않습니다. – tom