我希望能够以编程方式注销所有登录的用户。您如何在某些事件中强制注销所有用户?
问问题
7441 次
2 回答
18
首先在web.xml中定义HttpSessionEventPublisher
<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()
方法使它们过期或失效。
于 2013-02-07T16:03:57.327 回答
0
Ketan 为您提供了您正在寻找的答案,如果您更改第二个 for 块并session.expireNow();
改为使用,activeSessions.add(session);
您最终将导致所有活动会话都过期。
于 2015-09-09T10:50:59.593 回答