shrio权限的标识符

文章主要转载自:http://minjiechenjava.iteye.com/blog/2252020,
并做了部分修改,感谢原作者

简单使用

例如我们定义新增用户权限的字符串为:createUser,为role1添加创建用户的权限。
ini配置

role1=createUser

我们可以通过以下方式验证权限

subject.isPermitted("createUser");

多层次字符串表示权限

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

某个实例单个权限

role1=user:create

某个资源多个权限

多个权限逗号分隔

role1=user:create,user:delete

程序中验证

subject().checkPermissions("user:create","user:delete");

验证当前用户是否具有,用户的新增和删除的权限。
简写

role1=user:create,delete

程序中验证

subject().checkPermissions("user:create,delete");

某个资源所有权限

role1=user:create,update,delete,view

简写

role1=user:*

验证

subject().checkPermissions("user:*");

注意:反过来不成立
多个资源某个权限

role1=*:view

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

实例级别的权限

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

某个实例的所有权限
role1=user:*:1
表达的是角色1 拥有 实例1 的所有操作权限(例如,create,update,delete,view等);

所有实例的某个权限

role1=user:update:*
上边的表达式表达的是角色1拥有所有实例的更新权限。
验证:

subject().checkPermissions("user:update:1","user:update:2")

所有实例的所有权限

role1=user:*:*

表达的是,角色1 拥有 所有实例的所有权限。

缺失部分

对于缺失部分,表示拥有所缺失部分的所有权限。

例如

user:update

等价于

user:update:*

例如

user

等价于

user:*:*

你可能感兴趣的:(shrio权限的标识符)