Effector
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_effectseffects是 Effect 的数组,其中值可以为Allow,Indeterminate或者Denymatchers是显示结果是否符合策略的数组。policyIndex是模型中的策略索引。policyLength是策略的长度。
上面的代码说明了我们如何将参数传递到 MergeEffects 函数,并且该函数将根据 expr 处理效果和匹配。
要部署一个Effector,我们可以这样做:
- Go
var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
MergeEffects 表明如果 expr 可以匹配结果,也就是说 p_eft 是 allow,我们就可以合并所有效果。 如果没有符合拒绝的规则,我们就允许这样做。
备注
如果 expr 不能匹配 "priority(p_eft) || deny" 以及 policyIndex 短于 policyLength-1, 它将 短路 中间的一些effect。