Ответ 1
Сначала определите HttpSessionEventPublisher в web.xml
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
Затем определите <session-management>
в файле spring security.xml.
Теперь используйте SessionRegistry
в своем методе контроллера, чтобы аннулировать все сеансы. Ниже код извлекает все активные сеансы.
List<SessionInformation> activeSessions = new ArrayList<SessionInformation>();
for (Object principal : sessionRegistry.getAllPrincipals()) {
for (SessionInformation session : sessionRegistry.getAllSessions(principal, false)) {
activeSessions.add(session);
}
}
В каждом активном сеансе вы можете вызвать метод expireNow()
для его истечения или аннулирования.