2016-05-09 1 views
1

Рассмотрим этот сценарийМожно ли аннулировать httpsession из другого сеанса с использованием идентификатора сеанса?

адам Пользователь логины в websiteA используя webbrowserA с EMAILID [email protected] сеанс создается здесь и идентификатор сеанса хранится в базе данных

Затем адам Пользователь логины в websiteA используя webbrowserB с EMAILID [email protected] сеанс создается здесь и идентификатор сеанса хранится в базе данных

когда адам пользователя логины с помощью webbrowserB, я должен аннулировать сессию, которая была создана с помощью webbrowserA (предполагается, что сеанс в webbrowserA активен) , как аннулировать сеанс, созданный с помощью webbrowserA, используя его sessionid или другие возможные способы?

Технология: Java, SpringMVC, Sqlserver2008

ответ

2

Spring Security имеет Concurrent Session Control, который будет делать то, что вы просите.

+0

ty для деталей. после проверки, я сообщу вам об этом. реализован с помощью весеннего фильтра и хранения данных в базе данных сеанса. я также проверю это – divine

1

Нет прямого способа аннулировать сеанс из другого сеанса. Но вы можете сохранить в атрибуте ServletContext список идентификаторов сеанса, которые больше не должны приниматься.

Тогда вы можете просто использовать фильтр, который для каждого запроса проверяет, существует ли текущий сеанс и принадлежит к этому списку. Если это так, вы можете отменить его из фильтра.

Для вашего случая использования самым простым способом является то, что IMHO должен содержать атрибут ServletContext HashMap<String, Integer>, отображающий текущий идентификатор сеанса для почты пользователя и сохраняемый в каждом сеансе (в атрибуте сеанса) электронное письмо пользователя - Для этого вам просто нужно обновить эти атрибуты после каждого успешного входа в систему.

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

Это более или менее то, что весенняя безопасность может автоматически выполняться для вас, если вы используете параллельный контроль сеанса, как сказал @bernie.

+0

ty. после проверки, я сообщу вам об этом. реализован с помощью весеннего фильтра и хранения данных в базе данных сеанса. я тоже проверю это – divine

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