Как выйти из всех активных сессий при нажатии кнопки «Выйти»? - PullRequest
0 голосов
/ 03 февраля 2020

Я хотел бы выйти из всех активных сессий при нажатии кнопки выхода. Мой проект разработан Groovy на Grails 2.3.8, а также с использованием пружинной защиты 1.2.7

1 Ответ

0 голосов
/ 03 февраля 2020

Если у всех JSESSIONID хукокрусы разные для всех браузеров / вкладок / устройств (и я на 90% уверен, что они есть), то не существует готового способа удалить для них http-сессии.

Хотя создание такого механизма не имеет большого значения. Вы можете использовать одноэлементный кеш, например ConcurrentHashMap, с ключом идентификатора сеанса и значением идентификатора пользователя.

Вы можете заполнить синглтон через HttpSessionListener, например здесь или здесь

Теперь, если вы хотите удалить все сеансы пользователя, у вас есть чтобы выполнить итерацию по карте, найдите все записи для идентификатора пользователя и установите его значения, например, null.

Другой кусок головоломки - это before -фильтр или -интерцептор. Он должен проверить кэш и, если запись имеет null вместо идентификатора пользователя, выполнить выход из системы.

...