如何在spring-security中注销所有登录用户?

我希望能够以编程方式注销所有登录用户。 如何在某些事件上强制注销所有用户?

首先在web.xml中定义HttpSessionEventPublisher

  org.springframework.security.web.session.HttpSessionEventPublisher  

然后在spring security.xml文件中定义

现在,在控制器方法中使用SessionRegistry使所有会话无效。 下面的代码检索所有活动的会话。

 List activeSessions = new ArrayList(); for (Object principal : sessionRegistry.getAllPrincipals()) { for (SessionInformation session : sessionRegistry.getAllSessions(principal, false)) { activeSessions.add(session); } } 

在每个活动会话中,您可以调用expireNow()方法使它们过期或使其无效。

Ketan为您提供了您正在寻找的答案,如果您更改块的第二个并使用session.expireNow(); 而是activeSessions.add(session); 最终所有活动会话都将过期。