微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在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");
}
}
}
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐