我希望能够通过编程注销所有已登录的用户。如何在某个事件中强制注销所有用户?
我想要实现通过编程注销所有已登录的用户。在某种事件发生时,您如何强制注销所有用户?
我想要实现通过编程注销所有已登录的用户。在某种事件发生时,您如何强制注销所有用户?
首先在web.xml中定义HttpSessionEventPublisher
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
然后在您的spring security.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()
方法使其过期或失效。
session.expireNow();
替代 activeSessions.add(session);
,那么你将得到所有活动会话已过期的结果。session
是从sessionRegistry.getAllSessions
方法获取的。 - malagunagetAllSessions
返回一个 List<SessionInformation>
,在 SessionInformation
上你可以使用 expireNow()
方法来使会话过期。 - malaguna
expireNow()
来导致注销。你还需要其他的东西吗? - Neil Smithline