0

私の流れ:

  1. browser1でUser1のセッションを開始します(session1)
  2. browser2(session2)にUser1としてログインします
  3. browser1でページを更新します-エラーが表示されます:'このセッションは期限切れになっています(同じユーザーとして複数の同時ログインが試行された可能性があります)
  4. browser1のページをもう一度更新します-古いセッションは正常に復元されます

どうすればsession1を超えることができますか?

私の春の設定:

<session-management session-fixation-protection="migrateSession">
    <concurrency-control max-sessions="1" error-if-maximum-exceeded="false"/>
</session-management>
4

2 に答える 2

2

使用する内容は、ログインして再度ログインすることを忘れないでください。期限切れのセッションを以下に示すように別のURLにリダイレクトし、現在のセッションを手動で期限切れにすることができます。

セキュリティ構成の場合:

(期限切れのURL属性を追加するだけです)

.sessionManagement().sessionAuthenticationStrategy(concurrentSessionControlStrategy)
   .maximumSessions(1).maxSessionsPreventsLogin(false).expiredUrl("/users/expire-me")

fwd api / urlの場合:

@RequestMapping(value="expire-me", method=RequestMethod.GET)
@ResponseBody
public void expireSession(HttpServletRequest request,HttpServletResponse response) throws IOException {
    request.getSession(false).invalidate();
}

これは私がしたことであり、それは完全にうまく機能します。

于 2015-06-02T14:13:41.473 に答える
1

(別の回避策)あなたは私を覚えている認証も使用している必要があります、それはあなたの最初のブラウザが再ログインする方法です。正常に動作することが期待される場合は、を使用しないでremember-meください。

于 2014-11-14T08:38:47.783 に答える