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
より短い場合、中間の一部の効果をショートサーキットします。