Shiro 报UnavailableSecurityManagerException

错误描述

org.apache.shiro.UnavailableSecurityManagerException: No SecurityManager accessible to the calling code, either bound to the org.apache.shiro.util.ThreadContext or as a vm static singleton.

我在做一个springboot的多模块开发工程,在登录与权限认证中使用shiro框架却屡屡报错UnavailableSecurityManagerException。我很确保我有将SecurityManager用@Bean注入到容器中,@Configuration也有写,实在不明白发生了什么错误。
在这里插入图片描述

分析问题

在我耐心排错下,用Debug一个一个地找,终于发现,springboot项目居然没有扫描到@Configuration!因此没有初始化shrio配置类!究竟为什么会这样呢?@SpringBootApplication标签会扫描其包下包括子包下的所有注解,而我的登录模块没有放到同名包下,因此没有扫描到。比如说,我的springboot启动类位于com.transportation包下,那该包下的所有类的注解都能被扫描到,其他的模块的也可以扫描到,然而我的登录模块的文件没有放到com.transportation包下,就没有被扫描到。

解决问题

  1. 方法一:
    在登录模块中新建目录com.transportation,将所有的文件放到该包下(推荐做法)
  2. 方法二:
    @ComponentScan注解声明要扫描指定的包,需要注意的是,该注解与@SpringBootApplication会冲突,也就是说,会以@ComponentScan为准,不再扫描springboot启动类下的其他文件。当然,可以指定多个包的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值