跳转至主要内容

Effector

'Effect'代表政策规则的结果,而'Effector'是用于处理Casbin中效果的接口。

MergeEffects()

'MergeEffects()'函数用于将执行器收集的所有匹配结果合并为一个决定。

例如:

Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)

在这个例子中:

  • 'Effect'是由这个函数合并的最终决定(初始化为'Indeterminate')。
  • 'explainIndex'是'eft'('Allow'或'Deny')的索引,它被初始化为'-1'。
  • 'err'用于检查是否支持效果。
  • 'expr'是政策效果的字符串表示。
  • effects是一个效果数组,可以是AllowIndeterminateDeny
  • matches是一个数组,用于指示结果是否与策略匹配。
  • policyIndex是策略在模型中的索引。
  • policyLength是策略的长度。

上面的代码说明了如何将参数传递给MergeEffects()函数,该函数将根据expr处理效果和匹配。

要使用Effector,请按照以下步骤操作:

var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)

MergeEffects()的基本思想是,如果expr可以匹配结果,表明p_eftallow,那么所有效果都可以合并。 如果没有匹配到拒绝规则,那么决定是允许。

备注

如果expr不匹配条件"priority(p_eft) || deny",并且policyIndex小于policyLength-1,它将短路中间的一些效果。