Shiro 之 SecurityUtils 报错

本文探讨了在项目中引入Shiro框架时遇到的问题,即在与Struts框架结合使用时,登录功能无法正常工作。问题源于web.xml中过滤器的顺序不当,导致ShiroFilter未能有效拦截请求。通过调整strutsFilter与shiroFilter的顺序,成功解决了SecurityManager无法正确调用的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题起源: 

    最近在往公司现有的项目中添加 Shiro 框架, 配置都是 CV 过来的. 导致点击登录时, SecurityManager 不能正确调用

 

原因: 

    shiro 在运行时, 是先在 web 中找到 shiroFilter, 然后再去找里面的具体的配置, 我的是跟 spring 结合的, 所以里面的配置文件是 applicationContext-shiro.xml 文件, 里面配置了 SecurityManager, 后台代码是通过 SecurityUtils.getSubject(); 获取的当前的 Subject, 所以是 SecurityUtils 报错了.

解决办法: 

    我的项目是与 struts 框架的, 所以把 strutsFilter 放在 shiroFilter 的后面就可以了. 

总结: 

    是因为 web.xml 里面的代码是由上而下执行的, 所以你的路径是由 struts 来完成的, 而后面的 shiroFilter 不起作用了,所以你先执行 shiroFilter 就好了。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值