Shiro 采用注解方式无法进入自定义Realm类的授权方法 解决方案
来源:互联网 发布:hmmlearn python 教程 编辑:程序博客网 时间:2024/05/22 17:36
Shiro采用@RequiresPermissions没有执行doGetAuthorizationInfo解决
Shiro采用@RequiresPermissions没有执行doGetAuthorizationInfo解决之道
前几天在升级框架的时候,使用了标签注入的方式添加shiro的权限.但是没有执行AuthorizingRealm 的doGetAuthorizationInfo方法. 按照网上的办法,也没有解决掉,后来查看官网,解决办法如下:
添加依赖的包:
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.6.11</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.12</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>2.2.2</version>
</dependency>
在springMVC的配置文件中加入:
<!--采用注入式shrio权限管控 -->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="org.apache.shiro.authz.UnauthorizedException">/template/front/404</prop>
<prop key="java.lang.Throwable">/template/front/500</prop>
</props>
</property>
<property name="statusCodes">
<props>
<prop key="500">500</prop>
<prop key="404">404</prop>
<prop key="403">403</prop>
</props>
</property>
<property name="warnLogCategory" value="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" />
<property name="defaultErrorView" value="/template/front/500" />
<property name="defaultStatusCode" value="200" />
</bean>
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager" />
</bean>
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">
<property name="proxyTargetClass" value="true" />
</bean>
如果没有效果,可以参考下其他网站的方案,我的没有效果:
在使用Shiro框架进行项目整合时,使用注解在使用Shiro框架进行项目整合时,使用注解在使用Shiro框架进行项目整合时,使用注解@RequiresPermissions为方法提供是需要的权限,但是根本没有进行验证,后面发现在自己的Realm中只执行了doGetAuthenticationInfo(登录验证)方法而没有执行doGetAuthorizationInfo(权限验证)的方法。
查看相关资料后发现是因为在Springmvc的配置文件中(我的名字是spring-servlet.xml)没有加入
<aop:config proxy-target-class="true"/>
加入后解决问题.
貌似也可以使用:
<!-- 支持Shiro对Controller的方法级AOP安全控制 begin-->
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">
<property name="proxyTargetClass" value="true" />
</bean>
<!-- 保证实现了Shiro内部lifecycle函数的bean执行 -->
<bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
但是一定要记住是把这些配置放在 SpringMvc的配置文件中。
- Shiro 采用注解方式无法进入自定义Realm类的授权方法 解决方案
- shiro自定义realm无法使用注解
- Shiro 自定义realm授权与认证的实现
- Shiro入门10:自定义Realm进行授权
- spring集成shiro不进入自定义realm
- Apache Shiro 注解方式授权
- 使用Spring配置shiro时,自定义Realm中属性无法使用注解注入解决办法
- 使用Spring配置shiro时,自定义Realm中属性无法使用注解注入解决办法
- 我的shiro之旅-注解方式授权
- Shiro Review——自定义Realm实现授权
- 解决自定义Shiro.Realm扩展类不能用注解(@Resource或@Autowire)自动装配的问题
- shiro 配置都正确,不能进入自定义realm
- 在SpringMVC中开启Shiro注解授权的正确方法
- Shiro使用之自定义realm的编写
- shiro-realm授权过虑器
- shiro自定义Realm
- Shiro入门-自定义realm
- Shiro自定义Realm
- 7.8noip测试
- 实现List和Map数据的转换
- 我的小小学习笔记(5)之C++-----缺省函数
- Java8的HashMap详解(存储结构,功能实现,扩容优化,线程安全,遍历方法)
- C++输入输出格式--保留n位小数
- Shiro 采用注解方式无法进入自定义Realm类的授权方法 解决方案
- nginx 优化
- Macaca Macaca 实现 IOS Monkey 测试 (支持 macaca2.x 版本)
- volatile关键字
- 51Nod
- cout.put()
- c/c++实现堆排序
- React-Navigation与Redux整合详解
- 如何使用GitLab和Rancher构建CI/CD流水线 – Part 2