优先级模型
Casbin支持参考优先级加载策略。
####通过隐式优先级加载策略
这非常简单,顺序决定了策略的优先级,策略出现的越早优先级就越高。
model.conf:
[policy_effect]
e = priority(p.eft) || deny
通过显式优先级加载策略
另见: casbin#550
策略的第一个要素一定是优先级,并且优先级值较小的将具有较高的优先地位。 如果优先级有非数字字符,它将是被排在最后,而不是导致报错。 现在,明确的优先级仅支持 添加策略 & 添加策略,如果 升级策略 被调用,那么您不应该改变优先级属性。
model.conf:
[request_definition]
r = sub, obj, act
[policy_definition]
p = priority, sub, obj, act, eft
[role_definition]
g = _, _
[policy_effect]
e = priority(p.eft) || deny
[matchers]
m = g(r.sub, p.sub) && r.obj == p.obj && r.act == p.act
policy.csv
p, 10, data1_deny_group, data1, read, deny
p, 10, data1_deny_group, data1, write, deny
p, 10, data2_allow_group, data2, read, allow
p, 10, data2_allow_group, data2, write, allow
p, 1, alice, data1, write, allow
p, 1, alice, data1, read, allow
p, 1, bob, data2, read, deny
g, bob, data2_allow_group
g, alice, data1_deny_group
请求:
alice, data1, write --> true // `p, 1, alice, data1, write, allow` 拥有最高级的优先权
bob, data2, read --> false
bob, data2, write --> true // 对于bob是 `data2_allow_group` 的角色可以写入data2,而且没有具有更高优先级的否认策略
最后编辑: kuteng 文档更新时间: 2021-06-22 19:03 作者:kuteng