SpringBoot Shiro 权限注解不起作用的解决方法

 更新时间:2021年07月28日 15:17:03   作者:variablex  
本文主要介绍了SpringBoot Shiro 权限注解不起作用的解决方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

最近在学习springboot结合shiro做权限管理时碰到一个问题。

问题如下:

我在userRealm中的doGetAuthorizationInfo方法中给用户添加了权限,然后在Controller中写了下面的代码。其中URL为/listArticle的方法必须要有article:over权限才能通过。我在doGetAuthorizationInfo方法中给该用户添加的权限并没有article:over,但是当前端向该URL发送请求时,@RequiresPermissions注解不起作用,listArticle方法被执行了。而且我在方法内部打印isPermitted("article:over")的输出结果为false。最终通过网上查博客,发现是没有开启Shiro的注解支持的原因。

@RequiresPermissions("article:over")
@RequestMapping(value = "/listArticle", method = RequestMethod.POST)
public JSONObject listArticle(@RequestBody JSONObject request){
    System.out.println("---------isPermitted article:over--------" + SecurityUtils.getSubject().isPermitted("article:over"));
    CommonTools.paginationConvert(request);
    int ArticleNum = articleService.getArticleNum();
    List<JSONObject> list = articleService.listArticle(request.getIntValue("offset"), request.getIntValue("pageRow"));
    return Result.success(request, list, ArticleNum);
}


解决方法如下:

在ShiroConfig中添加如下一段代码。

//开启对shiro注解的支持
@Bean
public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
    AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
    advisor.setSecurityManager(securityManager);
    return advisor;
}
//开启aop注解支持
@Bean
public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
    DefaultAdvisorAutoProxyCreator defaultAAP = new DefaultAdvisorAutoProxyCreator();
    defaultAAP.setProxyTargetClass(true);
    return defaultAAP;
}

添加完这段代码后,我再向该URL发送请求时就会报如下异常,表明该用户没有该权限:
org.apache.shiro.authz.AuthorizationException: Not authorized to invoke method

参考博客:
https://www.cnblogs.com/shiguotao-com/p/10617693.html
https://www.cnblogs.com/tuifeideyouran/p/7696055.html

到此这篇关于SpringBoot Shiro 权限注解不起作用的解决方法的文章就介绍到这了,更多相关SpringBoot Shiro权限注解不起作用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用java swing实现qq登录界面示例分享

    使用java swing实现qq登录界面示例分享

    这篇文章主要介绍了使用java swing实现qq登录界面示例,需要的朋友可以参考下
    2014-04-04
  • MyBatis和MyBatis Plus并存问题及解决

    MyBatis和MyBatis Plus并存问题及解决

    最近需要使用MyBatis和MyBatis Plus,就会导致MyBatis和MyBatis Plus并存,本文主要介绍了MyBatis和MyBatis Plus并存问题及解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • Java设计模式之观察者模式_动力节点Java学院整理

    Java设计模式之观察者模式_动力节点Java学院整理

    这篇文章给大家介绍流量java设计模式之观察者模式,定义对象间一种一对多的依赖关系,使得当每一个对象改变状态。下面通过类图和实例代码给大家介绍java设计模式之观察者模式,感兴趣的朋友一起看看吧
    2017-08-08
  • Java多线程中的单例模式两种实现方式

    Java多线程中的单例模式两种实现方式

    这篇文章主要介绍了Java多线程中的单例模式两种实现方式的相关资料,需要的朋友可以参考下
    2017-04-04
  • java对接支付宝支付项目的实战记录

    java对接支付宝支付项目的实战记录

    最近公司有一个需求是接入第三方支付(微信&支付宝),我接到了支付宝支付,所以下面这篇文章主要给大家介绍了关于java对接支付宝支付项目的相关资料,需要的朋友可以参考下
    2022-06-06
  • Java编写网络聊天程序实验

    Java编写网络聊天程序实验

    这篇文章主要为大家详细介绍了Java编写网络聊天程序实验,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Java多线程中的ThreadLocal应用场景及问题解读

    Java多线程中的ThreadLocal应用场景及问题解读

    这篇文章主要介绍了Java多线程中的ThreadLocal应用场景及问题解读,ThreadLocal这个类在多线程并发中主要的使用场景是什么呢,我们都知道多线程并发问题实际就是多个线程对公共资源访问和修改问题,需要的朋友可以参考下
    2023-12-12
  • Java 通过mave命令下载jar包的示例代码

    Java 通过mave命令下载jar包的示例代码

    这篇文章主要介绍了Java 通过mave命令下载jar的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 详解如何在Spring中为@Value注解设置默认值

    详解如何在Spring中为@Value注解设置默认值

    在Spring开发中,我们经常会遇到需要从配置文件中读取属性的情况,@Value注解是Spring提供的一种便捷方式,能够让我们轻松地将配置文件中的属性注入到Spring Bean中,
    2024-10-10
  • Java中BigDecimal与0比较的一个坑实战记录

    Java中BigDecimal与0比较的一个坑实战记录

    BigDecimal属于大数据,精度极高,不属于基本数据类型,属于java对象,下面这篇文章主要给大家介绍了关于Java中BigDecimal与0比较的一个坑的相关资料,需要的朋友可以参考下
    2022-12-12

最新评论