2014-09-03 2 views
0

고객이 다른 브라우저에서 동일한 사용자가 로그인 할 때 자동으로 사용자 로그 아웃 기능을 구현하길 원합니다. 예 : Firefox 브라우저를 통한 사용자 로그인이 성공적으로 끝나면 IE 세션이 중단됩니다. 추가 작업은 로그인 페이지로 리디렉션됩니다.다른 브라우저에서 동일한 사용자가 로그인했을 때 사용자가 강제로 로그 아웃하는 방법

아이디어가 있으십니까?

+0

사용자 ID로 입력되고 세션 ID로 평가되는 싱글 톤/정적 세션 맵에 액세스하는 요청 필터를 구현할 수 있습니다. 현재 요청 사용자의 세션 ID가 저장된 요청의 사용자 ID와 일치하지 않으면 강제로 로그 아웃합니다. –

답변

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

이 줄을 설명해 주시겠습니까? applicationScopeMap.put (se.getSession(). getId(), se.getSession()); –

+0

applicationScopeMap은 세션 ID를 키로 사용하여 세션을 지정하는 데 사용할 Map 입니다. – faissalb

관련 문제