중복로그인 관련

(。◠ ◠。)·2023년 9월 15일
0

https://myhappyman.tistory.com/116
https://lts0606.tistory.com/320

    //중복로그인 지우기
    public synchronized static String getSessionidCheck(String type,String compareId){
    	
        String result = "";
        for( String key : sessions.keySet() ){
            HttpSession value = sessions.get(key);
            if(value != null &&  value.getAttribute(type) != null && value.getAttribute(type).toString().equals(compareId) ){
                result =  key.toString();
            }
        }
        removeSessionForDoubleLogin(result);
        return result;
    }
    
    private static void removeSessionForDoubleLogin(String userId){    	
    	LOGGER.info("remove userId : " + userId);
        if(userId != null && userId.length() > 0){
        	sessions.get(userId).setAttribute("", "");
        	//세션무효화
            sessions.get(userId).invalidate();
            //세션삭제
            sessions.remove(userId);
        }
    }

정상 로그아웃등의 경우 세션이 삭제되었을테니 sessions.get(key).getAttribute(id)의 값이 없을것임

로그인 순서 상, 이전세션을 지우고 새 새션을 만들어줌

getSessionidCheck : 같은 id값을 받으면 session.getId()를 얻어내서 해당 세션을 바로 invalidate() 하거나 세션에 값을 저장해서 인턴셉터에서 getAttribute로 처리할 수 있음

sessionCreated의 경우 로그인할때 동작하는건 아님..

profile
화이탱!

0개의 댓글