1、前言

使用shiro框架做权限控制是不错的选择,在使用shiro标签的过程中,是否会遇到一些坑呢。恰好笔者遇到了,在此记录一下。

2、shiro标签坑的描述

标签:

<shiro:haspermission name="你的权限"></shiro:haspermission>

当使用的标签具有层级关系的时候,就有可能掉坑里,并且出不来。

例如:

第一层级权限为:【dealer:clue】,第二层级为:【dealer:clue:add】,这个使用坑就出现了。当你使用【dealer:clue:add】权限,关闭【dealer:clue】权限时,你会发现然并卵。

查了很多资料,有人说shiro标签具有继承关系,其实不是的。是因为shiro框的判断机制引起的。我们来一起看看源码吧。

3、源码追踪

标签调用后台的方法:

核心方法:

protected List<Set<String>> getParts() {return this.parts;
}public boolean implies(Permission p) {if (!(p instanceof WildcardPermission)) {return false;} else {WildcardPermission wp = (WildcardPermission) p;// 将权限标识转化成set集合List otherParts = wp.getParts();int i = 0;for (Iterator part = otherParts.iterator(); part.hasNext(); ++i) {Set otherPart = (Set) part.next();if (this.getParts().size() - 1 < i) {return true;}Set part1 = (Set) this.getParts().get(i);// 判断包含关系【dealer:clue:add】与【dealer:clue】if (!part1.contains("*") && !part1.containsAll(otherPart)) {return false;}}while (i < this.getParts().size()) {Set arg7 = (Set) this.getParts().get(i);if (!arg7.contains("*")) {return false;}++i;}return true;}
}

4、总结

综上所述,有层级关系的权限标识就有可能带来使用的误区。

shiro标签的判断方式是通过集合的包含关系判断的,并不是通过字符串的形式。

5、参考文档

https://blog.csdn.net/bubble21/article/details/78829959

使用shiro标签遇到的坑相关推荐

  1. js中使用shiro标签的一个小坑

    在jsp页面中使用shiro标签很简单 <shiro:haspermission name="你的权限"> 你的标签 </shiro:haspermission& ...

  2. Shiro快速入门 —— 9.freemaker使用shiro标签

    2019独角兽企业重金招聘Python工程师标准>>> 本系列博文目录:https://my.oschina.net/u/3452433/blog/907396 shiro-free ...

  3. 【thymeleaf 】在 thymeleaf 中使用 shiro 标签

    前言 sprint boot 2.3.4.RELEASE 说明 shiro 未提供对 thymeleaf 的支持.第三方项目 thymeleaf-extras-shiro 提供了在 thymeleaf ...

  4. 请教Nutzwk项目,在beetl页面怎么用shiro标签呢?

    请教Nutzwk项目,在beetl页面怎么用shiro标签呢? 发布于 381天前  作者 WenTao-Love  195 次浏览  复制  上一个帖子  下一个帖子  标签: nutzwk 如题, ...

  5. springboot+thymeleaf+shiro标签

    1,pom中加入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId&g ...

  6. thymeleaf模板+Shiro标签对按钮权限的控制

    thymeleaf模板+Shiro标签对按钮权限的控制 环境介绍 SpringBoot+Shiro+thymeleaf模板+Layui(前端) 这两天学习了shiro相关的技术,碰到一个问题:如何根据 ...

  7. 第九节 Shiro标签原理分析

    一.shiro的标签 首先,你需要知道的是,标签的实质其实是Java代码.你已经知道,JSP实质也是Java代码,更别说用在JSP中的标签了. 稍后你会在源码追踪环节了解到:Shiro标签执行了哪些J ...

  8. Spring Boot Thymeleaf中使用Shiro标签

    在<Spring-Boot-shiro权限控制>中,当用户访问没有权限的资源时,我们采取的做法是跳转到403页面,但在实际项目中更为常见的做法是只显示当前用户拥有访问权限的资源链接.配合T ...

  9. springboot2 + thymeleaf + shiro1.4+redis里前端shiro标签没法用

    自打用了shiro,项目是三天两头出BUG...同样的配置摆在我这就不成...心痛 如今遇到了个更奇怪的问题,是前后端耦合的项目,直接调Index.html里的登陆接口可以实现登陆,但加上shiro标 ...

最新文章

  1. 使用Truffle时遇到的问题和解决方法
  2. 数据库正常运行,突然变慢的解决思路
  3. VS2008如何自动添加消息映射
  4. SpringBoot使用SOFA-Lookout监控
  5. 使用二进制包安装MariaDB
  6. java 判断端口是否被占用_java检测端口是否被占用详解
  7. 【数据结构与算法】之深入解析“有效的括号”的求解思路与算法示例
  8. linux6.5+5.4 vncserver配置
  9. Linux下PostgreSQL的安装和配置
  10. EditText设置可以编辑和不可编辑状态
  11. jQuery ui widget和jQuery plugin的实现原理简单比较
  12. 【模板篇】树状数组们(三)
  13. 用40年前的电脑打开女神图片,这你敢信?
  14. php jquery ajax实现用户名,php+jquery+ajax实现用户名验证
  15. 想去机器学习初创公司做数据科学家?这些问题值得你三思!
  16. 二选一数据选择器2-1 MUX
  17. cs61b-Java数据结构(一)autograder配置
  18. 爱心的数学函数方程_什么函数图像能构成爱心?
  19. win7 去掉快捷方式小箭头
  20. 重邮python实验课之华氏温度转摄氏温度速查表

热门文章

  1. 云呐|事业单位固定资产管理解决方案
  2. WINDOWS 系统如何查看 Python的安装版本号
  3. HTTP Content-Length深入实践
  4. Altium designer如何快速定义板子外形(直角和圆角)
  5. 色彩理论系列之一认识颜色
  6. 恶意电子邮件通过谷歌云服务托管有效载荷
  7. 如何判断链表是否有环的存在
  8. 元器件降额规范(第二部分)持续更新
  9. 初一上册数学用计算机进行运算,初一上册数学计算题300
  10. HTTP状态码100、200、300、400、500、600的含义