1. 首页
  2. >
  3. 编程技术
  4. >
  5. Java

springboot+shiro中使用 @RequiresPermissions和@RequiresRoles注解无效的解决方法(亲测有效)

最近在使用shiro框架的时候,出现了@RequiresPermissions和@RequiresRoles无效的情况,经过查阅大佬的博客,记录一下解决方法。

在ShiroConfig中加入一下代码即可。


/**
     *  开启shiro aop注解支持.
     *  使用代理方式;所以需要开启代码支持;
     */
    @Bean
    public LifecycleBeanPostProcessor lifecycleBeanPostProcessor(){
        return new LifecycleBeanPostProcessor();
    }
    @Bean
    @DependsOn({"lifecycleBeanPostProcessor"})
    public DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator(){
        DefaultAdvisorAutoProxyCreator advisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
        advisorAutoProxyCreator.setProxyTargetClass(true);
        return advisorAutoProxyCreator;
    }

    @Bean
    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager){
        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();
        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);
        return authorizationAttributeSourceAdvisor;
    }


第二种解决办法(测试无效,仅提供思路参考):

pom.xml中加入


<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-aop</artifactId>
</dependency>
同时application.properties中补充:


spring.aop.proxy-target-class=true