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의 경우 로그인할때 동작하는건 아님..