Front/Javascript·Jquery
지정시간이 지날때까지 브라우저에 이벤트 없으면 세션삭제 후, 로그인페이지로 이동하기
JENN_tech7
2022. 10. 25. 09:17
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