Effector
'Effect'代表政策规则的结果,而'Effector'是用于处理Casbin中效果的接口。
MergeEffects()
'MergeEffects()'函数用于将执行器收集的所有匹配结果合并为一个决定。
例如:
- Go
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
在这个例子中:
- 'Effect'是由这个函数合并的最终决定(初始化为'Indeterminate')。
- 'explainIndex'是'eft'('Allow'或'Deny')的索引,它被初始化为'-1'。
- 'err'用于检查是否支持效果。
- 'expr'是政策效果的字符串表示。
effects
是一个效果数组,可以是Allow
、Indeterminate
或Deny
。matches
是一个数组,用于指示结果是否与策略匹配。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
,它将短路中间的一些效果。