效果器
发布者:admin 发表于:439天前 阅读数:641 评论:0

效果器

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`, 它将 短路 中间的一些效果。 :::