Как истечь сеанс других пользователей в Spring Security - PullRequest
1 голос
/ 09 мая 2020

Я новичок ie в Spring Security, и у меня проблема с истечением срока действия пользовательского сеанса.
В моем приложении есть администратор с ROLE_ADMIN, и они могут изменять роли других пользователей.

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

Я проверил, что могу получить всю информацию о сеансе с помощью sessionRegistry.getAllSessions(), и попытался удалить информацию о сеансе с помощью приведенных ниже кодов.

List<SessionInformation> sessionInformations = sessionRegistry.getAllSessions(allPrincipals.get(i), false);

for (SessionInformation information : sessionInformations) {
    information.expireNow();
    sessionRegistry.removeSessionInformation(information.getSessionId());
}

allPrincipals.set(i, new AccountUserAdaptor(requestedAccount));

Я думал, что приведенного выше кода достаточно, чтобы истечь сеанс указанного c другого пользователя.
Но в SecurityContextPersistenceFilter аутентификация восстанавливается из сеанса, который, как я думал, уже истек.

Я проверил, что с помощью request.getSession() я могу получить действительный сеанс, который, как я думал, уже истек. Даже SessionID в information.getSessionId() и request.getSession() одинаков.

Я хочу знать, почему сеанс не истек.

Я использую Spring (не Spring-Boot)

...