Cute Happy Ghost
본문 바로가기
Front/Javascript·Jquery

지정시간이 지날때까지 브라우저에 이벤트 없으면 세션삭제 후, 로그인페이지로 이동하기

by JENN_tech7 2022. 10. 25.
728x90
SMALL

session이 끊기면 알람이 끊기면서 로그인 페이지로 이동해주고싶었다

근데 브라우저 세션은 브라우저가 켜져있는 한 생성이 되기때문에 session이 끊긴다고해서 로그아웃이 자동으로 될일은 없다 

인터넷 세상은 생각보다 수동이다.

setTimeout으로 키보드 이벤트를 체크하여 지정시간 동안 이벤트 없을 시 ajax로 세션체크 method호출하여 session을 전체삭제해주고 로그인페이지로 이동해주도록 하였다.

근데 로그인페이지에서도 작동을 하기때문에 로그인페이지가 아닐때만 세션삭제 후 이동하도록 하였다.

 

 

//사용자로부터 마우스 또는 키보드 이벤트가 없을경우의자동로그아웃까지의 대기시간, 분단위
var iMinute = 1;

var iSecond = iMinute * 60 ;
var timerchecker = null;

initTimer=function(){
/// //사용자부터 마우스 또는 키보드 이벤트가 발생했을경우자동로그아웃까지의 대기시간을 다시 초기화
	
	if(window.event){
		iSecond = iMinute * 60;
		clearTimeout(timerchecker);
//		console.log("iSecond EVENT:" +iSecond );
	}
	if(iSecond > 0){
//		console.log("iSecond >0:" +iSecond );
	//지정한 시간동안 마우스, 키보드 이벤트가 발생되지 않았을 경우
    	iSecond--;
    	timerchecker = setTimeout("initTimer()", 1000); // 1초 간격으로 체크
	}else{	
//		console.log("iSecond ELSE:" +iSecond );
		$.ajax({
			method: 'POST',
			url: '/main/sessionCheck.do',
			async : false,
			success : function(result) {
				if(result == "Y"){
					clearTimeout(timerchecker);
					alert("장시간 미사용으로 자동 로그아웃 처리되었습니다.");
					location.href = "/login.do"; // 로그아웃 처리 페이지
				}else{
				}
			},
			error : function(err){
				console.log('실패');
			}
	});
		
    }
}
onload = initTimer;///현재 페이지 대기시간
document.onclick = initTimer; /// 현재 페이지의 사용자 마우스 클릭이벤트 확인
document.onkeypress = initTimer;/// 현재 페이지의 키보트 입력이벤트 확인

일단 test로 1분을 해놓았고 추후에는 원하는 분으로 들리면 된다

테스트하고싶으면 콘솔 주석 풀어서 확인해보면 된다.

 

 

 

 @RequestMapping(value = "/main/sessionCheck.do")
 @ResponseBody
 public String sessionCheck()throws Exception {
     String result = null;
     String referer =  request.getHeader("referer");
     if(!referer.contains("login")) {
         session.invalidate();
         result = "Y";
     }
     return result;
 }

sessioncheck method는 간단하게 커스텀해봤다.

getheader에서 전 주소를 가져와 저장을 시키고 login페이지가 아닐 때 세션을 삭제해주는거다

그리고 result 결과값을 보내 js에서 결과값에 따라 로직을 실행하도록 하였다

728x90
LIST

댓글