Файлы cookie удаляются из браузера при выходе (Spring Security 3.1)?

Я использую Spring Security 3.1 для обработки аутентификации при входе в систему, тайм-аутов сеансов и максимальных сеансов.

Также я удаляю куки только при выходе из системы.

<logout delete-cookies="JSESSIONID" logout-success-url='logout page' />

Также я установил максимальное количество сеансов на 1 на данный момент для тестирования. Когда я открываю свою веб-страницу в браузере, она сохраняет идентификатор jsession в файле cookie, но проблема начинается, когда я выхожу и снова открываю браузер. В настоящее время я не могу найти файлы cookie в браузере, они удаляются, поэтому я не перенаправляюсь на страницу приветствия (страница после входа в систему).

Но когда я снова вхожу в систему, он показывает сообщение об ошибке, которое я печатаю: превышено количество сеансов.

Возможно, это означает, что сеанс остается активным на стороне сервера, но он удаляется из файла cookie на стороне клиента, из-за чего я не вижу страницу приветствия и не могу войти на страницу входа.

Что еще мне нужно сделать, чтобы файлы cookie оставались в браузере до истечения времени сеанса? Я установил время ожидания сеанса на 10 дней.


person Abhinav    schedule 21.11.2012    source источник


Ответы (1)


Это нормальное поведение. Файлы cookie JSESSIONID действительны только в течение всего сеанса браузера, поэтому исчезают, когда вы закрываете браузер. Это не то, что вы можете изменить.

Нет никакой связи между восприятием сеанса браузером и временем существования сеанса на сервере. Если вы на самом деле не выйдете из системы, сеанс сервера все еще существует до тех пор, пока не истечет время ожидания и не будет удален сервером (в вашем случае 10 дней). До тех пор, пока это не произойдет, повторная попытка входа будет превышать разрешенное количество сеансов.

Если вы хотите оставаться в системе в течение 10 дней, вы можете рассмотреть возможность использования файлов cookie «запомнить меня», а не стандартного сеанса контейнера сервлетов.

Если у вас нет определенного требования для ограничения количества одновременных сеансов, которые может иметь пользователь, я бы не стал использовать это, поскольку это просто вызовет у вас проблемы. На самом деле вы не показали свою конфигурацию для этого, но на самом деле есть только два варианта. Либо пользователь может снова войти в систему, и предыдущий сеанс будет помечен как просроченный, либо попытка входа во второй раз вызовет ошибку до тех пор, пока не истечет время предыдущего сеанса, либо пользователь выйдет из системы, чтобы явно аннулировать его. Поведение контролируется error-if-maximum-exceeded атрибут пространства имен.

person Shaun the Sheep    schedule 21.11.2012
comment
Спасибо за ответ и извините за опоздание, чтобы прочитать его ... да, я использую ошибку, если максимальное превышение, и необходимо ограничить количество сеансов, поэтому я считаю, что мне нужно использовать файлы cookie «запоминать меня». - person Abhinav; 26.11.2012