public abstract class ShiroAuthorizingRealm extends AuthorizingRealm{

    private static final String OR_OPERATOR = " or ";
private static final String AND_OPERATOR = " and ";
private static final String NOT_OPERATOR = "not "; @Override
public boolean isPermitted(PrincipalCollection principals, String permission) {
/*理解问题:传递过来的字符串的格式:
或者格式 : 权限1 or 权限2
与格式: 权限1 and 权限2
非格式: not 权限1
*/ //步骤:通过判断来实现三种操作符
if (permission.contains(OR_OPERATOR)) {
//如果有任何一个权限,返回true,否则返回false
String[] permissions = permission.split(OR_OPERATOR);
for (String p : permissions) {
//只要有一个权限是通过验证的就返回true
if (this.isPermittedWithNotOperator(principals, p)) {
return true;
}
}
return false; }else if (permission.equals(AND_OPERATOR)) {
//必须两个权限都有,返回true.否则返回false
String[] permissions = permission.split(AND_OPERATOR);
for (String p : permissions) {
//只要有一个权限是false的,我们就返回假
if (this.isPermittedWithNotOperator(principals, p)==false) {
return false;
}
}
return true; }else {
//如果没有关键字,按正常方式执行
return this.isPermittedWithNotOperator(principals, permission);
} } private boolean isPermittedWithNotOperator(PrincipalCollection principals, String permission) {
//判断权限字符串前缀是否有"not "关键字。
if(permission.startsWith(NOT_OPERATOR)) {
//如果有,就返回相反的结构
return !super.isPermitted(principals, permission.substring(NOT_OPERATOR.length()));
} else {
return super.isPermitted(principals, permission); }
}
}

<shiro:hasPermission name="modular:to_edit or modular:delete">
                                                    
 </shiro:hasPermission>

<shiro:hasPermission name="modular:to_edit or modular:delete">
                                                    
 </shiro:hasPermission>

<shiro:hasPermission name="modular:to_edit or modular:delete">
                                                    
 </shiro:hasPermission>

shiro-重写标签功能----shiro:hasPermission 标签重写的更多相关文章

  1. Shiro笔记(五)JSP标签

    Shiro笔记(五)JSP标签 导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags&q ...

  2. Shiro学习笔记五(Shiro标签,及通配符)

    1.首先是导入标签库 <%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> ...

  3. Shiro学习(9)JSP标签

    Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮. 导入标签库 Java代码   <%@taglib prefix="shiro&qu ...

  4. django博客功能实现——标签功能

    标签功能添加流程 0.功能概括 标签作为文章中的分类标记,会显示出该文章是关于哪一方面的文章,比如是关于python的还是关于django的. 当我们点击该标签的时候,会出现该博客中所有属于该标签的文 ...

  5. Hashslider – 带有 Hash 标签功能的 jQuery 内容滑块

    Hashslider 实现了常见的 jQuery 滑块的功能,特别之处在于给 URL 加上了标签,因此你能够连接到滑块的某块内容.滑块的内容也可以从外部的 HTML 文件获取. 您可能感兴趣的相关文章 ...

  6. XAML Region标签功能

    XAML本身没有Region标签功能,很郁闷.现在有插件可以实现该功能了!   <!-- Region (Any Text You Want) --> Your Code <!-- ...

  7. leangoo更换背景、设置颜色标签功能上线啦!

    leangoo看板背景太单调?卡片标签想要添加多个?没有问题,Leangoo的本次更新就给大家带来了漂亮背景和实用的颜色标签设置,接下来就让我们一起来看看吧! 设置背景: 点击看板右上角个人头像图标按 ...

  8. 源泉书签,助您管理海量收藏。www.yuanquanshuqian.com,今日更新:多标签功能已实现

    源泉书签.助您管理海量收藏.www.yuanquanshuqian.com,今日更新:多标签功能已实现

  9. Django web开发【5】 实现标签功能

    标签tag在很多web2.0应用中都很常见,标签其实就是关联某些信息的一个关键字.打标签实际上就是给内容分配标签的过程,它通常由作者或者用户实现.标签之所有这么流行是因为它允许用户对自己创建的博客.图 ...

随机推荐

  1. golang 判断前缀后缀、包含关系

    HasPrefix 判断字符串 s 是否以 prefix 开头:strings.HasPrefix(s, prefix string) bool HasSuffix 判断字符串 s 是否以 suffi ...

  2. Robot Framework(5)——自动化示例

    上篇介绍了一些selenium2在robot framework中的一些关键字,这一篇主要来记录一下实际应用 一.安装并导入Selenium2Library 安装的工作一开始已经完成,可以用pip l ...

  3. Paillier同态加密实现

    一.C++(该方案只实现了加密以及解密) 1.git clone https://github.com/klei0229/paillier.git 2.下载GMP与NTL包: 下载版本以及操作参见ht ...

  4. OGG复制同步,提示字段长度不够ORA-01704

    日常运维OGG的环境中,如果遇到复制进程报错,提示字段长度不足如何处理??? 正常情况下,字段长度不足,但是未达到Oracle的限制时,可以对字段进行扩大限制满足目的. 实际环境中,遇到源端GBK,目 ...

  5. Java面试题(反射篇+对象拷贝篇)

    反射 57.什么是反射? 反射主要是指程序可以访问.检测和修改它本身状态或行为的一种能力 Java反射: 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否 ...

  6. JVM系列.历史上出现过的Java虚拟机

    HotSpot绝对是当今商用虚拟机的王者,但是在Java历史上出现过很多Java虚拟机,这篇文章就来整理下历史上出现过的Java虚拟机以及他们的特性. Sun Classic Sun Classic虚 ...

  7. CentOS7系统使用rpm方式安装MySQL5.7

    参考:https://blog.csdn.net/wudinaniya/article/details/81094578 1.首先去mysql官网下载rpm包,一个是server包一个是client包 ...

  8. 【新鲜出炉的个人项目】基于 Flink 的商品推荐系统

    FlinkCommodityRecommendationSystem Recs FlinkCommodityRecommendationSystem(基于 Flink 的商品推荐系统) 1. 前言 系 ...

  9. springboot @valid与@validated的参数校验使用总结

    好久没在这平台写博客了,最近整理了这东西,先给出总结 // @Valid只能用在controller,@Validated可以用在其他被spring管理的类上 // @Valid可以加在成员变量上(本 ...

  10. 关于java的二维码的生成与解析

    本文说的是通过zxing实现二维码的生成与解析,看着很简单,直接上代码 import java.io.File; import java.io.IOException; import java.nio ...