我的客戶希望我實現一項功能,該功能會自動強制用戶註銷,同一用戶從另一個瀏覽器登錄時。例如:用戶通過Firefox瀏覽器成功登錄後,IE會話將停止。任何進一步的行動將被重定向到登錄頁面。如何強制用戶註銷同一用戶從另一個瀏覽器登錄
任何想法?
我的客戶希望我實現一項功能,該功能會自動強制用戶註銷,同一用戶從另一個瀏覽器登錄時。例如:用戶通過Firefox瀏覽器成功登錄後,IE會話將停止。任何進一步的行動將被重定向到登錄頁面。如何強制用戶註銷同一用戶從另一個瀏覽器登錄
任何想法?
您可以實現會話監聽器,將用戶名與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));
}
...
}
你能解釋這一行嗎? ().getId(),se.getSession()); – 2014-09-03 09:39:21
applicationScopeMap是一個Map
可以實現的請求過濾器,它訪問一個單/靜態會話映射,鍵與用戶ID和重視與會話ID。如果當前請求的用戶的會話ID與存儲的用戶的會話ID不匹配,您將強制它註銷。 – 2014-09-03 08:52:31