规则
资源标识符:操作:对象实例 ID
即对哪个资源的哪个实例可以进行什么操作. 其默认支持通配符权限字符串,: 表 示资源/操作/实例的分割;, 表示操作的分割,* 表示任意资源/操作/实例。
多层次管理
例如:user:query、user:edit
- 冒号是一个特殊字符,它用来分隔权限字符串的下一部件:第一部分
是权限被操作的领域(打印机),第二部分是被执行的操作。 - 多个值:每个部件能够保护多个值。因此,除了授予用户 user:query
和 user:edit 权限外,也可以简单地授予他们一个:user:query, edit。 - 还可以用 * 号代替所有的值,如:user:* , 也可以写:*:query,表示
某个用户在所有的领域都有 query 的权限。
实例级访问控制
这种情况通常会使用三个部件:域、操作、被付诸实施的实例。如:user:edit:manager。
- 也可以使用通配符来定义,如:user:edit:、user::、user::manager。
- 部分省略通配符:缺少的部件意味着用户可以访问所有与之匹配的值,比如:user:edit 等价于 user:edit :、user 等价于 user:?
- 注意:通配符只能从字符串的结尾处省略部件,也就是说 user:edit 并不等价于 user:*:edit。