エフェクト
効果はポリシールールの結果です。 そして、 エフェクター はCasbinエフェクターのインターフェースです。
MergeEffects()
MergeEffectsは、執行者によって収集されたすべての一致結果を1つの決定にマージします。
例:
Effect, explindex , err = e.MergeEffects(expr, effects matches, policyIndex, policyLength)
この例では:
エフェクトは、この関数によってマージされる最終決定です(Indeterminateとして初期化されます)。explanation Indexはeftのインデックスで、AllowまたはDeny(Initialized as-1)errは効果がサポートされているかどうかを確認するために使用されます。exprは文字列として格納されたポリシー効果ですエフェクトは、許可、不確定または拒否のような効果の配列です。matchesは、結果がポリシーと一致することを示す配列です。policyIndexはモデルのポリシー指数です。ポリシー長さはポリシーの長さです。
上のコードは、パラメータを MergeEffects 関数に渡す方法を示しており、関数は expr に基づいてエフェクトを処理し一致します。
エフェクターを展開するには、以下を実行します。
var e Effector
Effect, description Index, err = e.MergeEffects(expr, effects matches, policyIndex, policyLength)
MergeEffects の基本的な考え方は、 expr が p_eft が 許可であることを意味する結果と一致する場合を示します。 やっとすべての効果を融合させることができます。 否定ルールが一致しない場合は、我々は許可します。
note
If the expr can not match "priority(p_eft) || deny" and also the policyIndex is shorter than policyLength-1, it will short-circuit some effects in the middle.