效果器
Effect是一个policy rule的结果 Effector 是用于Casbin effector的API
MergeEffects()
MergeEffects将 enforcer 收集的所有匹配结果合并为一项决定。
例如:
Go
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
在本示例中:
- Effect 是此函数合并的最后决定(初始参数为 indeterminate)。
- explainIndex 是 eft 的索引,eft 的值可为 Allow 或者 Deny.(初始值是 -1)
- err 用于检查effect是否受到支持。
- expr 是被存储为 string 的policy_effects
- effects 是 Effect 的数组,其中值可以为Allow, Indeterminate 或者 Deny
- matchers 是显示结果是否符合策略的数组。
- policyIndex 是模型中的策略索引。
- policyLength 是策略的长度。
- 上面的代码说明了我们如何将参数传递到 MergeEffects 函数,并且该函数将根据 expr 处理效果和匹配。
要部署一个Effector,我们可以这样做:
Go
var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
MergeEffects 表明如果 expr 可以匹配结果,也就是说 p_eft 是 `allow,我们就可以合并所有效果。 如果没有符合拒绝的规则,我们就允许这样做。
:::note
如果 expr不能匹配
“priority(p_eft) || deny”以及
policyIndex短于
policyLength-1`, 它将 短路 中间的一些效果。 :::
最后编辑: kuteng 文档更新时间: 2021-06-22 19:03 作者:kuteng