Shiro框架下,遇到404错误就需要重新登录问题的解决办法。

. 一般做法:

在web.xml里配置error-page.

404

/WEB-INF/views/error/404.jsp




项目当中使用shiro安全框架,配置了非ServletContainer的session管理器。

如果自定义了sessionManager,即session不由web容器来管理,而是我们自己处理,比如讲session放到couchbase上面或者其他分布式缓存上面,


此时,如果想同时使用< error-page>来处理404错误,就会造成session的重新建立,表现为已登录用户,访问一个不存在的url,得到一个返回404页面,然后再访问正确的url地址又需要重新登录。



之所以这样是因为:

shiro的DefaultWebSessionManager把session自己管理起来了,不放到web容器里,那么当发生404时,web容器在处理过程里发现容器里没有session,那么就会建立一个新的sessionid,然后把sessionid绑定到请求上。于是shiro框架就认为是一个新的session来了,但是没有登录,所以自动跳转到login页面。




解决办法

shiroFilter拦截器下加入下面代码



完整配置


一定要加这几行

REQUEST

        FORWARD

        INCLUDE

        ERROR

你可能感兴趣的:(Shiro框架下,遇到404错误就需要重新登录问题的解决办法。)