Spring 3.1.1.Release、Security 3.1.0.Release を使用しています。
Web アプリにログイン/ログアウトを追加しましたが、セッション スコープ Bean が以前のように機能していません。Bean は、CMSConnector と呼ばれる CMS に接続するために使用されます。
ユーザーを認証するために、AuthenticationProvider を実装し、authenticate() 呼び出しで、セッション スコープの CMSConnector を取得し、CMSConnector.login() を呼び出します。CMS ログインに失敗すると、ログインに失敗します。
問題 -
ログインが成功すると、ログインが成功した直後に @predestroy logout() が呼び出されます。その後、SessionFixationProtectionStrategy が前のセッションの無効化を呼び出し、新しいセッションを割り当てていることがわかりました。
session.invalidate();
session = request.getSession(true); // we now have a new session
invalidate() は、セッション スコープの Bean で @predestroy メソッドを呼び出しています。
そのため、接続を閉じずに @predestroy アノテーションを一時的に削除しました。(非常に悪い習慣です。)
問題を解決するための回避策は何ですか?
@PostConstruct を作成してそこにログイン プロセスを配置しようとしましたが、request.getSession(true) が呼び出されたときに @PostConstruct が呼び出されません。
ありがとう!
ジェイソン