我是靠谱客的博主 勤奋板栗,最近开发中收集的这篇文章主要介绍No SecurityManager acce 关于spring静态注入securityManager的问题,Subject subject = SecurityUtils.getSubject(),觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
遇到问题: 在接收mq队列进行逻辑处理,需要操作缓存时,在getSecurityManager()时,出现如下异常,即无法获取到securityManager对象。而在正常的系统登陆后操作缓存,却没有出现此问题。
原因在于项目在登陆成功后,已经在shiro过滤器中注入了该对象,而在消息队列消费过程中,此对象仍然为空,故在获取session去操作缓存过程中,因为获取不到securityManager对象,从而出现异常。
于是需要对securityManager进行静态注入,
<!-- 静态注入,相当于调用SecurityUtils.setSecurityManager(securityManager) --> <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="staticMethod" value="org.apache.shiro.SecurityUtils.setSecurityManager"/> <property name="arguments" ref="securityManager" /> </bean>
即在任意首次静态方法调用时,就会将其注入进来。
如果arguments
是多个,采用 List 赋值。
<!-- 静态注入,相当于调用SecurityUtils.setSecurityManager(securityManager) -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="staticMethod" value="org.apache.shiro.SecurityUtils.setSecurityManager"/>
<property name="arguments">
<list>
<value>securityManager</value>
</list>
</property>
</bean>
因此,问题得到解决。
参考地址:https://www.sojson.com/blog/157.html
最后
以上就是勤奋板栗为你收集整理的No SecurityManager acce 关于spring静态注入securityManager的问题,Subject subject = SecurityUtils.getSubject()的全部内容,希望文章能够帮你解决No SecurityManager acce 关于spring静态注入securityManager的问题,Subject subject = SecurityUtils.getSubject()所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复