私は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が呼び出されませんでした。
ありがとうございます!
ジェイソン
おかげラヴィは、デバッグセッションでは、私のpreDestroyはSessionFixationProtectionStrategyプロセスによって呼び出さなっています。 – Jason