Я хочу, чтобы вы могли автоматически выводить всех зарегистрированных пользователей. Как принудительно вывести всех пользователей на какое-либо событие?
Как вы отключаете всех зарегистрированных пользователей в spring -security?
Ответ 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()
для его истечения или аннулирования.
Ответ 2
Ketan дает вам ответ, который вы ищете, если вы меняете второй для блока и используете session.expireNow();
вместо activeSessions.add(session);
, вы закончите с истечением всех активных сеансов.