メインコンテンツにスキップ

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」は効果の配列で、AllowIndeterminate、またはDenyになることができます。
  • 「matches」は結果がポリシーと一致するかどうかを示す配列です。
  • 「policyIndex」はモデル内のポリシーのインデックスです。
  • 「policyLength」はポリシーの長さです。

上記のコードは、パラメータを「MergeEffects()」関数に渡す方法を示しており、関数は「expr」に基づいて効果と一致を処理します。

「Effector」を使用するには、次の手順に従ってください:

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

「MergeEffects()」の基本的な考え方は、exprが結果と一致できる場合、つまりp_eftallowであることを示す場合、すべての効果をマージできるということです。 denyルールが一致しない場合、決定は許可となります。

メモ

もしexprが条件"priority(p_eft) || deny"に一致せず、policyIndexpolicyLength-1より短い場合、中間の一部の効果をショートサーキットします。