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であることを示す場合、すべての効果をマージできるということです。 denyルールが一致しない場合、決定は許可となります。
メモ
もしexprが条件"priority(p_eft) || deny"に一致せず、policyIndexがpolicyLength-1より短い場合、中間の一部の効果をショートサーキットします。