如何在Spring-Security中注销所有登录用户?

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


答案 1

首先在 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()


答案 2

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


推荐