Spring boot 集成Shiro 添加了@RequiresPermissions ,但是doGetAuthorizationInfo 没有调用

首先声明一下我的项目基本情况,这可能是解决问题的大前提,现在好多文章上来就是解决方法,可能看了半天,其实并不适用。我使用的版本是:

   spring boot 2.1.3+shiro 1.4.3

shiro 是一款比较受欢迎的权限框架,在较多项目中得到使用,最近在学习spring boot 集成shiro的过程中,遇到了一个问题,就是在controller的方法上添加了注解@RequiresPermissions , 但是在实际运行访问controller对应的url的时候并没有进入定义的realm类的doGetAuthorizationInfo 方法,该方法是负责授权的方法,网络上充斥大量的解决方案,无非就是类似于下面的解决方法:

 在Springmvc的配置文件中(我的配置文件名字是spring-servlet.xml)没有加入

   <aop:config proxy-target-class="true"/>

这个解决方法应该说并没有错误,但是前提应该是在使用xml方式进行配置的情况下。对于使用了@RequiresPermissions的方法,shiro在运行的时候会基于spring 的aop原理执行securityManager的 isPermitted( )方法,最后实际调用了realm 的doGetAuthorizationInfo()方法,按理说配置了@RequiresPermissions注解,框架会自动执行doGetAuthorizationInfo()的方法,但是我的集成项目却没有执行。

      对于使用spring boot集成shiro的项目中,是因为没有启用spring aop的功能,如果你的项目没有添加aop相关的依赖,shiro无法基于aop原理执行securityManager的 isPermitted( )方法,也就不会执行。因此,需要在你得项目中添加如下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

重启项目,debug可以看到已经进入了doGetAuthorizationInfo()方法了。

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值