1.问题
背景:项目是springboot框架,用了web security拦截请求,控制用户权限
项目有一个页面,点击分类按钮,发送ajax请求后台获取数据并局部刷新数据。当session过期时,点击分类按钮,请求会被拦截转为“/login”,但由于是ajax,页面实际并不会刷新而转向login页面,于是页面数据也全部变为undefinde,手动刷新页面才会到登录界面。
2.解决:ajax请求成功会返回请求数据对象,如果session过期,请求不会发送到事务处理器,也就不会有返回数据,根据这一点在JS中判断并进行页面重定向操作。
$.ajax({
url:'/xx?id='+id,
type:'get',
success:function(data,status,xhr){
if(xhr.responseJSON!==undefined){
drawTable(data);
}else{
window.location.href="/login";//没有返回json数据则跳转到登录界面
}
}
});
下面是打印的xhr参数,如果返回了数据就会有responseJSON参数,反之就是被拦截了(这个项目被websecurity拦截)
3.总结:这个问题应该可以在后端解决,刚学的springboot,小白一只,这个方法只是暂时满足需求,后面可能会有问题或者有更好的方法,再改~