session失效,使用ajax请求数据被拦截,此时正常的处理逻辑是跳到登录界面,而不是界面没有变化(java推断是否是ajax请求)

Posted liguangsunls

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了session失效,使用ajax请求数据被拦截,此时正常的处理逻辑是跳到登录界面,而不是界面没有变化(java推断是否是ajax请求)相关的知识,希望对你有一定的参考价值。

在登录过滤器中。推断请求是ajax请求还是超链接或者地址栏变化的请求

 if (httpServletReq.getHeader("x-requested-with") != null
                            && httpServletReq.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest"))
                    {
                        JSONObject jsessiontimeout = new JSONObject();
                        jsessiontimeout.put("sessiontimeout", true);
                        response.getWriter().print(jsessiontimeout.toString());
                        response.getWriter().flush();
                        response.getWriter().close();
                    }
                    else {
                        goLogin(httpServletReq, httpServletRes);
                    }

js

/*******************************************************************************
 * 推断session是否超时。全部动态请求都须要进行推断
 ******************************************************************************/
function cheackSessionTimeOut(data){
 
 if(isJson(data))
 {
  if(data.sessiontimeout==true){
    //重装浏览器地址栏的地址,跳到登陆页面
   window.location.reload();
  }
 }
};

在全部ajax请求数据成功之后都调用 cheackSessionTimeOut(data);

 $.post(
        url,
        {},
        function(data)
        {   
           cheackSessionTimeOut(data);
        }    
     );  































以上是关于session失效,使用ajax请求数据被拦截,此时正常的处理逻辑是跳到登录界面,而不是界面没有变化(java推断是否是ajax请求)的主要内容,如果未能解决你的问题,请参考以下文章

springmvc使用ajax进行数据交互时,session失效问题(@ResponseBody与session能否同时使用?)

session过期,拦截ajax请求并跳转登录页面

struts2拦截器过滤放行后ajax请求后参数丢了

ajax请求session失效重定向到登录页面

ajax --- Ajax跨域请求保证同一个session的问题

Shiro:ajax的session超时处理