Если у всех JSESSIONID
хукокрусы разные для всех браузеров / вкладок / устройств (и я на 90% уверен, что они есть), то не существует готового способа удалить для них http-сессии.
Хотя создание такого механизма не имеет большого значения. Вы можете использовать одноэлементный кеш, например ConcurrentHashMap
, с ключом идентификатора сеанса и значением идентификатора пользователя.
Вы можете заполнить синглтон через HttpSessionListener
, например здесь или здесь
Теперь, если вы хотите удалить все сеансы пользователя, у вас есть чтобы выполнить итерацию по карте, найдите все записи для идентификатора пользователя и установите его значения, например, null
.
Другой кусок головоломки - это before
-фильтр или -интерцептор. Он должен проверить кэш и, если запись имеет null
вместо идентификатора пользователя, выполнить выход из системы.