如何在Spring-Security中注销所有登录用户?
2022-09-02 10:33:58
我希望能够以编程方式注销所有登录用户。如何在某些事件上强制注销所有用户?
我希望能够以编程方式注销所有登录用户。如何在某些事件上强制注销所有用户?
首先在 Web 中定义 HttpSessionEventPublisher.xml
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
然后在您的弹簧安全性文件中定义.xml。<session-management>
现在,在控制器方法中使用以使所有会话无效。下面的代码检索所有活动的会话。SessionRegistry
List<SessionInformation> activeSessions = new ArrayList<SessionInformation>();
for (Object principal : sessionRegistry.getAllPrincipals()) {
for (SessionInformation session : sessionRegistry.getAllSessions(principal, false)) {
activeSessions.add(session);
}
}
在每个活动会话上,可以调用方法来使它们过期或失效。expireNow()
Ketan为您提供了您正在寻找的答案,如果您将第二个更改为block并使用,则最终所有活动会话都将过期。session.expireNow();
activeSessions.add(session);