2016-12-22 15 views
2

最大同時セッションを1に設定しました。 は今、私はアクティブなセッションがあるかどう扱いたい2 situationsは(誰かがそのユーザーIDのためにすでにログインしている)があります。スプリングセキュリティ:セッションを上書きする前に警告を表示

  1. ユーザーが同じブラウザで再度ログインページにアクセスした場合:この場合

  2. ユーザが別のブラウザ/クライアントマシンからログインした場合:この場合、「このユーザは既にセッションがアクティブです。本当にしたいですか?」というエラーを表示する必要があります。セッションを上書きしますか? "ユーザーが「はい」を選択すると、前のセッションでエラーが表示されます(これはエラーページを構成できることを示しています)。また、いいえを選択してもログインしないと、前のセッションは維持されます。

どのようにこれらの用途をスプリングセキュリティで達成できますか?これまでのところ、最大セッション数とエラーページを設定することで、同時セッションの基本的な管理を見つけることができました。

助けてください。

ありがとうございました。

答えて

1

あなたはほぼ完了したと思います。セッションを上書きする前にユーザーに確認するには、以下の手順に従います。

  1. ConcurrentSessionFilterのexpiredUrlプロパティは、ユーザーに尋ねるためのUI(askUser.htmlなど)を提供するページに移動する必要があります。
  2. askUser.htmlフォームは、POSTパラメータがyesまたはnoの別のURL(/ api/confirmSessionRewriteなど)に送信します。
  3. コントローラでConfirmSessionRewriteを実行すると、セッションレジストリからユーザーを削除するか、ログインページに転送します。

    sessionRegistry.removeSessionInformation(info.getSessionId());

  4. あなたはConcurrentSessionFilterは/ API/confirmSessionRewrite要求上で実行しませんように、あなたの設定を変更する必要があります。それ以外の場合はループになります。
関連する問題