更详细看原文 https://my.oschina.net/u/729917/blog/885421

在ajax请求时,如果session失效时,无法正确的跳转登录页面。在之前的项目中处理的方法是通过自定义一个过滤器来处理,session失效时返回错误码来处理。但因为使用shiro后,会先执行shiro定义的过滤器,才会执行自定义的过滤器,所以之前的方法行不通,参考了很多大大的博客,把我的处理方法贴上。

1.自定义拦截器LoginFormFilter拦截器,继承FormAuthenticationFilter类,在需要登录而未登录的请求都会执行onAccessDenied请求。

此处的onAccessDenied方法跟FormAuthenticationFilter基本类似,只是加了一段判断是ajax请求的代码 ,如果是ajax请求的话,直接返回错误码,而不是跳转登录,因为如果是ajax请求的话,也无法跳转。