2016-12-22 66 views
2

我已將最大併發會話設置爲一個。 現在有2 situations我要處理,如果有一個活動會話(有人已經登錄該用戶ID):Spring Security:覆蓋會話前顯示警告

  1. 如果用戶在同一個瀏覽器再次訪問登陸頁面: 在這種情況下, ,他將直接記錄在

  2. 如果從不同的瀏覽器/客戶機用戶登錄:。在這種情況下,需要顯示錯誤「會話已經激活該用戶是否確定要。覆蓋會議?「。如果用戶選擇'是',錯誤將顯示在上一個會話中(我知道錯誤頁面可以配置),如果他選擇否,它將不會登錄,前一個會話將持續。

如何使用彈簧安全措施來實現這些使用功能?到目前爲止,通過設置最大會話數和錯誤頁面,我能夠找到併發會話的基本管理。

請幫忙。

謝謝。

回答

1

我想你已經差不多完成了。要在覆蓋會話之前詢問用戶,請按照以下步驟操作。

  1. ConcurrentSessionFilter的expiredUrl屬性應該到達提供UI的頁面以詢問用戶(例如askUser.html)。
  2. askUser.html表單用POST參數yes或no提交給另一個url(例如/ api/confirmSessionRewrite)。
  3. 在控制器ConfirmSessionRewrite中,從會話註冊表中刪除用戶或將其轉發到登錄頁面。

    sessionRegistry.removeSessionInformation(info.getSessionId());

  4. 你必須修改你的配置,以便ConcurrentSessionFilter不會對運行/ API/confirmSessionRewrite請求。否則它將是一個循環。