加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 01:31:20 所属栏目:百科 来源:网络整理
导读:问题描述 在web应用中使用jquery进行ajax请求,有些ajax请求必须是登录后或者通过认证授权后才可以访问的,而这些认证授权以及登录拦截通常在系统中都会使用filter或者interceptor来统一实现,对于普通的http请求被拦截后通过redirect方式重定向到登录页面没
问题描述
在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");
}
}
}
});

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读