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,小白一只,这个方法只是暂时满足需求,后面可能会有问题或者有更好的方法,再改~