记录问题:登录session过期,ajax请求被web security拦截,页面没有数据且没有重定向到login页面

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

猜你喜欢

转载自blog.csdn.net/qq_22656233/article/details/79678754