惟一登錄

在此,簡單地聊聊同一帳號不容許同時登錄的兩種解決方案:前端

  • 登錄成功後返回前端token(含有時間撮),並將token保存到Redis或數據庫中。每次請求都對比入參token和DB中的token是否一致?不一致,則返回消息並跳到登錄頁。處理方法上可參考上一篇文章:[登錄成功後7天無操做需再次登錄]
  • 監聽器能夠監聽Session及其所包含的屬性(Attribute)
    1. 創建一個監聽器,實現HttpSessionAttributeListener接口
    2. 用戶登錄時將用戶關鍵字段存入session中,將session放入map中
    3. 每一個新會話開啓時,在監聽器中對Session包含的屬性進行判斷,若是新增的屬性與map中已有session的用戶關鍵數據相同則移除已登錄的session
    /**
     * 惟一登錄監聽器
     */
    public class MyListener implements HttpSessionAttributeListener{
    
        // 存放用戶登錄信息
        Map<String, HttpSession> sessionMap = new HashMap<String, HttpSession>();
    
        public void checkAttributeAdded(HttpSessionBindingEvent event) {
          // TODO 具體邏輯
    
        }
    
    }
    複製代碼
相關文章
相關標籤/搜索