シナリオ
- サーバーとブラウザを再起動して、セッションデータがないようにします。
- www.someurl.comのパブリックアクセスページにアクセスします。私のコントローラーは私にこれとのセッションを取得します
HttpSession session=request.getSession(true);
- 新しいタブで開くwww.someurl.com/admin制限付きアクセスページへのプレーンアンカーリンクをクリックします。Spring Security 3はこれを傍受し、資格情報を要求します。正常にログインしました。
- www.someurl.comで前のタブに戻り、ページを更新します。
問題
www.someurl.comのコントローラーで気付いたのは、ステップ2とステップ4でセッションIDが異なることです。SpringSecurityが新しいセッションを作成し、そのセッションがパブリックページのリクエストにアタッチされているようです。なぜこれが発生し、Spring Securityに既存のセッションを使用させることができますか?
トレースされたシナリオ
- ブラウザとサーバーを再起動して、セッションデータが存在しないようにします。
- www.someurl.comにアクセスします。コントローラにリクエストが挿入されました。request.sessionがnullです。getSession(true)は、ID87B091B12F38D44C53AF0DA9E2147484のセッションを取得します。LogServiceはリクエストオブジェクトを取得し、getSession(true)も取得しますが、ID 87B091B12F38D44C53AF0DA9E2147484のセッションを取得するため、これまでのところすべて問題ありません。
- /adminをクリックします。ページが新しいタブで開きます。ログインします。
- www.someurl.comを更新します。コントローラにリクエストが挿入されました。request.sessionはnullではありません。セッションIDは547DF59035C91783D783BAEF4A15FBFFです。