2010-12-28 14 views
3

かなり標準的な設定の春のセキュリティアプリケーションがあります。現時点では、プリンシパルごとに1セッションしか許可しません。最初のセッションがログアウトまたは期限切れになるまで、同じプリンシパルによる追加ログインを拒否します(maximumSessions = 1、excpeptionIfMaximumExceeded = true)。同時ログインでセッションに警告する

これを変更して、プリンシパルが別のセッションで現在アクティブなログインで2回目にログインしたときに、最初のセッションが無効化/置き換えられるようにしたいと考えています。これは、提供されたスプリングセキュリティの同時セッション制御戦略を使用して簡単に実行できますが、ユーザーに警告する方法を理解するのに問題があります。ユーザのセッションが置き換えられると、そのセッションはログアウトハンドラによって無効にされます。次のリクエストでは、ログイン・ページにリダイレクトされ、問合せ文字列にエラー・コードが表示されます。しかし、このリダイレクトを取得するリクエストが画像やプログラム以外の他の呼び出しであれば、これを処理できません。

ユーザーをセッションのある中間の状態にする必要がありますが、期限が切れているため、元のセッションを置き換えようとしなかった場合にはログインする必要があります。しかし、私はこれを行う良い方法はありません。

このような設定の例がありますか?

答えて

1

あなたは、セッションが無効にされようとしているときにユーザーに警告するために、javascriptのポーリングメカニズムを検討しましたか?こうすることで、彼らはセッションが有効ではないことを知り、フォームやテキストエリアを部分的に記入した場合にリフレッシュできる可能性があります。

これはログイン側からも機能します。ログイン後にステップを追加するには、別のセッションがアクティブであり、無効にすることを確認する必要があります。

一般的に、認証はブール値である必要があるため、ステップの間には必要ないようです。どちらかが認証されているか、それとも不安定です。中間ゾーンは、すべてのケースを処理するのが難しいかもしれません。

+0

私たちは現在、これに適応するタイムアウトのためにセッションが期限切れになるためのポーリングメカニズムを持っています。私たちはログイン時に別のステップを踏むことで対応できますが、UI側で退去したセッションをきれいに処理することにもっと興味があります。セキュリティは本当にブール値でなければならないと私は同意しますが、セッションを "魔法のように"無効なセッションの最後のリクエストがリクエストによってキャッチされた場合のログイン画面、つまり返されたステータス、つまりイメージまたはスクリプトが処理できない場合 – HonkHonkHonk

関連する問題