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

. 一般做法:

在web.xml里配置error-page.

<error-page>

<error-code>404</error-code>

<location>/WEB-INF/views/error/404.jsp</location>

</error-page>




项目当中使用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拦截器下加入下面代码



完整配置


一定要加这几行

<dispatcher>REQUEST</dispatcher>

        <dispatcher>FORWARD</dispatcher>

        <dispatcher>INCLUDE</dispatcher>

        <dispatcher>ERROR</dispatcher>

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一:富诚集团发展历程 1987年富诚集团诞生温州 1999年杭州分公司成立 2000年南京分公司成立 2003年成...
    DephniREN阅读 1,480评论 0 0
  • 对于世上的万物生灵, 死亡迟早会降临, 要为守护先祖的遗骨和信仰的神殿, 去直面强敌并力战而亡。 ——至暗时刻 献...
    晓堇viola阅读 508评论 0 0
  • 自信点,别,害,羞 (1)想想你想改变什么,为什么要改变 不是每个人都能圆滑地应对各种社交场合,所以,我们不要浪费...
    海蓉sarah阅读 581评论 0 1
  • 点解你做乜都做唔好 点解你做人咁失败 点解你唔努力,点解咁懒散 点解人家对你好,你要伤害人家 点解你要做人,点解你...
    梨花颂阅读 291评论 0 0