在Ajax请求中处理登录session超时的方法

问题描述
在web应用中使用jquery进行ajax请求,有些ajax请求必须是登录后或者通过认证授权后才可以访问的,而这些认证授权以及登录拦截通常在系统中都会使用filter或者interceptor来统一实现,对于普通的http请求被拦截后通过redirect方式重定向登录页面没有问题,但是ajax是异步操作,如何采用简单统一的方式来解决这个问题
1.服务器端添加登录过滤器
publicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException {
if(request.getSession().getAttribute("user")==null)//判断session里是否有用户信息 {
if(request.getHeader("x-requested-with")!=null&&request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")) {
//如果是ajax请求响应头会有,x-requested-with;
response.setHeader("sessionstatus","timeout");//在响应头设置session状态
returnfalse;
}
}
returntrue;
}
2.在公共页面添加$.ajaxSetup操作,判断一下header中设置的状态码
//全局的ajax访问,处理ajax清求时sesion超时
$.ajaxSetup({
contentType:"application/x-www-form-urlencoded;charset=utf-8",
complete:function(XMLHttpRequest,textStatus){
varsessionstatus=XMLHttpRequest.getResponseHeader(" sessionstatus");//通过XMLHttpRequest取得响应头,sessionstatus,
if(sessionstatus=="timeout"){//如果超时就处理,指定要跳转页面
window.location.replace("${path}/common/login.do");
}
}
}
});

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...