2014-09-03 57 views
0

我的客戶希望我實現一項功能,該功能會自動強制用戶註銷,同一用戶從另一個瀏覽器登錄時。例如:用戶通過Firefox瀏覽器成功登錄後,IE會話將停止。任何進一步的行動將被重定向到登錄頁面。如何強制用戶註銷同一用戶從另一個瀏覽器登錄

任何想法?

+0

可以實現的請求過濾器,它訪問一個單/靜態會話映射,鍵與用戶ID和重視與會話ID。如果當前請求的用戶的會話ID與存儲的用戶的會話ID不匹配,您將強制它註銷。 – 2014-09-03 08:52:31

回答

2

您可以實現會話監聽器,將用戶名與JSESSIONID(因此會話對象)映射

public class SessionListener implements HttpSessionListener{ 

    @Override 
    public void sessionCreated(HttpSessionEvent se) { 
     se.getSession().getId(); 
     applicationScopeMap.put(se.getSession().getId(), se.getSession()); 
    } 
... 

那麼當用戶登錄,你也應該與會話ID映射自己的用戶名和檢查他已經在地圖和無效它在一個會話:

public String doLogin(){ 

     String sessionId = userSessionMap.get(username); 
     if(sessionId != null){ 
      applicationScopeMap.get(sessionId).invalidate(); 
     }else{ 
      userSessionMap.put(username, FacesContext.getCurrentInstance().getExternalContext().getSessionId(true)); 
     } 
     ... 
    } 
+0

你能解釋這一行嗎? ().getId(),se.getSession()); – 2014-09-03 09:39:21

+0

applicationScopeMap是一個Map ,您將使用該會話以會話ID作爲密鑰。 – faissalb 2014-09-03 09:40:55

相關問題