2016-05-09 2 views
1

EMAILID [email protected] セッションがここで作成されたセッションIDを有するwebbrowserBを用いwebsiteAに、セッションIDを使用して別のセッションからhttpsessionを無効にすることはできますか?

そしてデータベースのユーザADAMログインを記憶されているとwebbrowserAを用いwebsiteAにこのシナリオを

ユーザーADAMログインを検討EMAILID [email protected] セッションがここで作成され、webbrowserBを使用してユーザADAMログインは、iがwebbrowserAを使用して作成されたセッションを無効化する必要がある場合webbrowserAがアクティブであるに(セッションを想定

セッションIDがデータベースに格納されています) 。 webbrowserAを使って作成したセッションを無効にするにはどうすればいいですか?

テクノロジ:Java、SpringMVC、Sqlserver2008

答えて

2

春のセキュリティは、あなたが求めるものを行うでしょうConcurrent Session Controlを持っています。

+0

tyです。私はあなたにこれを確認した後でお知らせします。スプリングフィルタの助けとセッションデータベースにデータを格納して実装されています。私はこれもまた – divine

1

別のセッションからセッションを無効にする直接の方法はありません。しかし、ServletContext属性には、もはや受け入れられないセッションIDのリストを格納することができます。

次に、リクエストごとに現在のセッションが存在し、そのリストに属しているかどうかをテストするフィルタを使用できます。そうであれば、フィルタから無効にすることができます。

あなたのユースケースでは、ユーザーメールの現在のセッションIDをマッピングするServletContext属性HashMap<String, Integer>を保持し、すべてのセッション(セッション属性内)にユーザーの電子メールを格納するのが最も簡単な方法です - そのためには、ログインが成功するたびにこれらの属性を更新するだけです。

現在のセッションが既に接続されているかどうか(電子メールを含む)とそのIDがその電子メールの登録IDかどうかをテストするフィルタを使用します。登録されたIDでない場合、フィルタはセッションを無効にし、ログインページ(または同じIDを持つ別のログインのためにセッションが閉じられたことを示すページ)にリダイレクトします。

これは、あなたが@bernieによると同時にセッションコントロールを使用する場合、あなたのために自動的に行うことができます。

+0

tyにチェックします。私はあなたにこれを確認した後でお知らせします。スプリングフィルタの助けとセッションデータベースにデータを格納して実装されています。私はこれもチェックする – divine

関連する問題