2012-04-19 4 views
1

Когда пользователь имеет связанный с ним объект HttpSession, а затем хочет «выйти из системы», вы сделали бы недействительным то, что HttpSession, которое, в свою очередь, удалит его с карты, в которой хранится ServletContext всех сеансов. Но это только удаляет его на стороне сервера, что происходит на стороне клиента? Сохраняет ли пользователь все файлы cookie с идентификатором сеанса, который теперь больше не имеет соответствующего объекта сеанса на сервере и продолжает отправлять его на веб-сервер? И что происходит, когда пользователь хочет снова войти в систему после выхода из системы?Недействительный сеанс

+0

вы также можете аннулировать эту кошачьи стороны клиента. –

+0

Когда пользователь пытается повторно подключиться, sessionId не будет найден, поэтому сеанс не будет подключен. – tom

ответ

2

Я предполагаю, что cookie sessionId все равно будет сохранен, но поскольку этот sessionId не будет соответствовать объекту сеанса в памяти сервера, он будет отброшен сервером в следующий раз, когда пользователь снова войдет в систему. На стороне сервера он будет довольно прозрачным, request.getSession() автоматически вернет новый объект сеанса.

+0

Okey, но старый файл cookie остается до тех пор, пока он не окажется недействительным? – user626912

+0

Это будет связано с реализацией браузера, но я думаю, что файл cookie останется до тех пор, пока он не будет исчерпан в большинстве случаев. Время истечения времени продиктовано вашим сервером, например, в конфигурации tomcat: 30 maksimov

1

Я хотел бы добавить к ответу Максимов.

Хотя файл cookie все еще присутствует на стороне клиента, сервер может удалить cookie также на стороне клиента. 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 означает, что файл cookie должен быть удален. Таким образом, сервер может попросить клиента удалить куки-файл, отправив ему тот же файл cookie с максимальным возрастом 0.

Смежные вопросы