20

ログインしているすべてのユーザーをプログラムでログアウトできるようにしたい。あるイベントですべてのユーザーを強制的にログアウトするにはどうすればよいですか?

4

2 に答える 2

18

まず、web.xmlでHttpSessionEventPublisherを定義します

<listener>
    <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>

次に、Springsecurity.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()メソッドを呼び出して期限切れにするか無効にすることができます。

于 2013-02-07T16:03:57.327 に答える