2012-04-11 7 views
1

私はSpring 3.1.1.Release、Security 3.1.0.Releaseを使用しています。セキュリティSessionFixationProtectionStatgyがセッションスコープのBeanと干渉する

私はWebアプリケーションにログイン/ログアウトを追加しましたが、セッションスコープのBeanはそれと同じように動作していません。このBeanは、CMSConnectorというCMSに接続するために使用されます。

ユーザーを認証するために、AuthenticationProviderを実装し、authenticate()コールでセッションスコープのCMSConnectorを取得し、CMSConnector.login()を呼び出します。 CMSログインに失敗すると、ログインに失敗します。

PROBLEM -

ログインが成功、@PreDestroyログアウト()ログインに成功した直後に呼び出されている場合。私はそれから、SessionFixationProtectionStrategyが以前のセッションを無効にして新しいセッションを割り当てていることを発見しました。

session.invalidate(); 
session = request.getSession(true); // we now have a new session 

invalidate()はセッションスコープのBeanで@predestroyメソッドを呼び出しています。

したがって、@predestroyアノテーションを一時的に削除して、接続を閉じないでください。 (非常に悪い習慣)

問題を解決するための回避策はありますか?

@PostConstructを作成してそこにログイン処理を入れようとしましたが、request.getSession(true)が呼び出されたときに@PostConstructが呼び出されませんでした。

ありがとうございます!

ジェイソン

答えて

0

のため、私は私の元の質問を解決しませんでしたが、私は回避策を実装 - セッションでセッションを期限切れオブジェクトの代わりに、@PreDestroyを添付を期限切れ。

0

私はそのことSessionFixationProtectionStrategyが、ConcurrentSessionControlStrategyを考えます。

セットMAX-セッション=「 - 1」このコードsnippet

+0

おかげラヴィは、デバッグセッションでは、私のpreDestroyはSessionFixationProtectionStrategyプロセスによって呼び出さなっています。 – Jason

関連する問題