ajax請求session失效重定向到登錄頁面
阿新 • • 發佈:2017-12-26
ttr == als xmlhttp 操作 var ajax請求 direct 自定義
在ajax請求的頁面引入一個自定義的AjaxRedirect.js的文件
AjaxRedirect.js的代碼如下:
$(function(){ $.ajaxSetup({ type: ‘POST‘, complete: function(xhr,status) { var sessionStatus = xhr.getResponseHeader(‘sessionstatus‘); if(sessionStatus == ‘timeout‘) { var top = getTopWinow(); alert(‘10分鐘沒有操作, session已過期, 請重新登錄.‘); top.location.href = ‘../LoginController/toLoginPage.do‘; //去到登錄頁面的請求 } } }); function getTopWinow(){ var p = window; while(p != p.parent){ p = p.parent; } return p; } })
過濾器中判斷有沒有登錄的代碼如下:
1 private void checkLogin(HttpServletRequest req, HttpServletResponse res, FilterChain chain) 2 throws IOException, ServletException { 3 Account acc = (Account) req.getSession().getAttribute("acc"); 4 if (acc != null) { 5 chain.doFilter(req, res);6 return; 7 } 8 // session失效的情況 9 // 1.判斷是ajax請求 10 if (req.getHeader("x-requested-with") != null && req.getHeader("x-requested-with").equals("XMLHttpRequest")) { 11 res.setHeader("sessionstatus", "timeout"); 12 } else {// 2.不是ajax請求 13 res.sendRedirect("../LoginController/toLoginPage.do"); 14 } 15 }
ajax請求session失效重定向到登錄頁面