1. 程式人生 > >ajax請求判斷登入超時並給出提示

ajax請求判斷登入超時並給出提示

第一:在後臺登入邏輯中判斷是否是ajax請求,並設定特定的返回資料;

判斷請求頭中是否含有X-Requested-With並等於XMLHttpRequest,如果為true,則證明是ajax請求

if(request.getHeader("X-Requested-With") != null && request.getHeader("X-Requested-With").equals("XMLHttpRequest")){
	//判斷請求頭中是否含有X-Requested-With並等於XMLHttpRequest,如果為true,則證明是ajax請求
	response.setHeader("SessionStatus", "sessionTimeOut");//設定session狀態
	response.setStatus(401);//設定返回狀態碼
	return false;
}else {
	logger.info("重定向到登入頁面");
	//重定向到登入頁面,具體程式碼省略。。。
	return super.onAccessDenied(request, response);
}

下圖可以看到ajax請求的請求頭: 

第二:前端進行判斷並給出提示;

設定全域性的ajaxError,這樣不用對每個ajax請求都去判斷驗證;

$(document).ajaxError(function (event, jqXHR, options, errorMsg) {
    var sessionStatus = jqXHR.getResponseHeader('SessionStatus');
    if (sessionStatus && sessionStatus === 'sessionTimeOut') {
     
        alert("您的會話已過期,請重新登入");
    }
});