使用shiro标签遇到的坑
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标签遇到的坑相关推荐
- js中使用shiro标签的一个小坑
在jsp页面中使用shiro标签很简单 <shiro:haspermission name="你的权限"> 你的标签 </shiro:haspermission& ...
- Shiro快速入门 —— 9.freemaker使用shiro标签
2019独角兽企业重金招聘Python工程师标准>>> 本系列博文目录:https://my.oschina.net/u/3452433/blog/907396 shiro-free ...
- 【thymeleaf 】在 thymeleaf 中使用 shiro 标签
前言 sprint boot 2.3.4.RELEASE 说明 shiro 未提供对 thymeleaf 的支持.第三方项目 thymeleaf-extras-shiro 提供了在 thymeleaf ...
- 请教Nutzwk项目,在beetl页面怎么用shiro标签呢?
请教Nutzwk项目,在beetl页面怎么用shiro标签呢? 发布于 381天前 作者 WenTao-Love 195 次浏览 复制 上一个帖子 下一个帖子 标签: nutzwk 如题, ...
- springboot+thymeleaf+shiro标签
1,pom中加入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId&g ...
- thymeleaf模板+Shiro标签对按钮权限的控制
thymeleaf模板+Shiro标签对按钮权限的控制 环境介绍 SpringBoot+Shiro+thymeleaf模板+Layui(前端) 这两天学习了shiro相关的技术,碰到一个问题:如何根据 ...
- 第九节 Shiro标签原理分析
一.shiro的标签 首先,你需要知道的是,标签的实质其实是Java代码.你已经知道,JSP实质也是Java代码,更别说用在JSP中的标签了. 稍后你会在源码追踪环节了解到:Shiro标签执行了哪些J ...
- Spring Boot Thymeleaf中使用Shiro标签
在<Spring-Boot-shiro权限控制>中,当用户访问没有权限的资源时,我们采取的做法是跳转到403页面,但在实际项目中更为常见的做法是只显示当前用户拥有访问权限的资源链接.配合T ...
- springboot2 + thymeleaf + shiro1.4+redis里前端shiro标签没法用
自打用了shiro,项目是三天两头出BUG...同样的配置摆在我这就不成...心痛 如今遇到了个更奇怪的问题,是前后端耦合的项目,直接调Index.html里的登陆接口可以实现登陆,但加上shiro标 ...
最新文章
- 使用Truffle时遇到的问题和解决方法
- 数据库正常运行,突然变慢的解决思路
- VS2008如何自动添加消息映射
- SpringBoot使用SOFA-Lookout监控
- 使用二进制包安装MariaDB
- java 判断端口是否被占用_java检测端口是否被占用详解
- 【数据结构与算法】之深入解析“有效的括号”的求解思路与算法示例
- linux6.5+5.4 vncserver配置
- Linux下PostgreSQL的安装和配置
- EditText设置可以编辑和不可编辑状态
- jQuery ui widget和jQuery plugin的实现原理简单比较
- 【模板篇】树状数组们(三)
- 用40年前的电脑打开女神图片,这你敢信?
- php jquery ajax实现用户名,php+jquery+ajax实现用户名验证
- 想去机器学习初创公司做数据科学家?这些问题值得你三思!
- 二选一数据选择器2-1 MUX
- cs61b-Java数据结构(一)autograder配置
- 爱心的数学函数方程_什么函数图像能构成爱心?
- win7 去掉快捷方式小箭头
- 重邮python实验课之华氏温度转摄氏温度速查表