ajax請求判斷登入超時並給出提示
阿新 • • 發佈:2018-12-14
第一:在後臺登入邏輯中判斷是否是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("您的會話已過期,請重新登入"); } });