shiro权限标识符的用法

1 篇文章 0 订阅
1 篇文章 0 订阅
本文介绍了Apache Shiro框架中权限标识符的使用,包括简单使用方法、多层次字符串表示权限的方式,以及实例级别的权限配置。通过示例展示了如何定义和控制不同层级的资源访问权限。
摘要由CSDN通过智能技术生成

简单使用

例如我们定义新增用户权限的字符串为:createUser,为role1添加创建用户的权限。
ini配置
  1. role1=createUser
我们可以通过以下方式验证权限
  1. subject.isPermitted("createUser");

多层次字符串表示权限

上边的简单的字符串形式,需要每个功能都定义一个字符串,不方便管理。shiro提供了多层次的权限组成。
创建用户的权限我们可以这样配置
 
某个实例单个权限
  1. role1=user:create

某个资源多个权限

多个权限逗号分隔
  1. role1=user:create,user:delete
程序中验证
  1. subject().checkPermissions("user:create","user:delete");
验证当前用户是否具有,用户的新增和删除的权限。
简写
  1. role1=user:create,delete
程序中验证
  1. subject().checkPermissions("user:create,delete");

某个资源所有权限

  1. role1=user:create,update,delete,view
简写
  1. role1=user:*
验证
  1. subject().checkPermissions("user:*");
 
多个资源某个权限
 
  1. role1=*:view
这个表达式代表的就是用户1拥有所有资源的查看的权限,不单单包括用户查看,还包括其他的,例如定单的查看等等。
验证
  1. subject().checkPermissions("user:view");

实例级别的权限

通配符同时可以支持实例级别的权限设置。
有三部分组成,第一部分是域( domain) , 第二部分是操作( action) , 第三部分是实例(instance)
某个实例的某个权限
例如:
  1. role1=user:update:1
表达的是,角色1 拥有实例1的更新权限。
第一部分可以是多个层次分隔的,例如:
  1. role1=app1:system:user:update:1
验证:
  1. if(SecurityUtils.getSubject().isPermitted("user:update:1"){
  2. }
某个实例的多个权限
例如:
  1. role1=user:update,delete:1
表达的是,角色1 拥有实例1 的更新和删除权限。
 
某个实例的所有权限
  1. role1=user:*:1
表达的是角色1 拥有 实例1 的所有操作权限(例如,create,update,delete,view等);
 
所有实例的某个权限

 

  1. role1=user:update:*
上边的表达式表达的是角色1拥有所有实例的更新权限。
验证:
  1. subject().checkPermissions("user:update:1","user:update:2")

所有实例的所有权限

  1. role1=user:*:*
表达的是,角色1 拥有 所有实例的所有权限。
 

缺失部分

对于缺失部分,表示拥有所缺失部分的所有权限。
 
例如
  1. user:update
等价于
  1. user:update:*

例如

  1. user
等价于
  1. user:*:*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值