2

ログインしているユーザーのHttpSessionを終了することはできますか?

ユーザーのセッション内から次のことを実行できます。

HttpSession s = request.getSession(false);
s.invalidate(); // make sure s != null

しかし、管理者ユーザーが特定のユーザーを「キックアウト」するにはどうすればよいでしょうか。

アクティブなセッションのリストを返すAPIを見つけたいと思ってServletContextいましたが、そうではないようです。

SpringSecurity3とTomcat7を使用しています。

4

2 に答える 2

3

Spring Securityには、この種のシナリオを処理するためのSessionRegistryがあります。session-registry-refタグの属性を使用して宣言できますconcurrency-control。ここに小さなドキュメントがあります。

于 2012-09-04T16:56:10.017 に答える
3

基本的に2つの方法があります(私はSpringを行わないため、Spring Securityを考慮の対象外にしておきます)。

  1. これらすべてのセッションをアプリケーション全体で収集しますMap<User, HttpSession>。次に、

    sessions.get(user).invalidate();
    

    HttpSessionListenerおよび/またはは、セッションのタイムアウト/期限切れの場合にHttpSessionBindingListenerアプリケーション全体をクリーンアップするのに役立つ場合があります。Map

  2. DBにブール列を追加します。この列は、要求ごとに何らかのフィルターによってチェックされます。

    if (shouldLogout(user)) {
        session.invalidate();
    }
    
于 2012-09-04T16:52:41.393 に答える