Effector
Der Effect
repräsentiert das Ergebnis einer Richtlinienregel und der Effector
ist die Schnittstelle zur Handhabung von Effekten in Casbin.
MergeEffects()
Die Funktion MergeEffects()
wird verwendet, um alle von dem Durchsetzer gesammelten übereinstimmenden Ergebnisse zu einer einzigen Entscheidung zusammenzuführen.
Zum Beispiel:
- Go
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
In diesem Beispiel:
Effect
ist die endgültige Entscheidung, die durch diese Funktion zusammengeführt wird (initialisiert alsIndeterminate
).explainIndex
ist der Index voneft
(Allow
oderDeny
) und wird als-1
initialisiert.err
wird verwendet, um zu überprüfen, ob der Effekt unterstützt wird.expr
ist die Zeichenkettenrepräsentation der Richtlinieneffekte.effects
ist ein Array von Effekten, dieAllow
,Indeterminate
oderDeny
sein können.matches
ist ein Array, das angibt, ob das Ergebnis mit der Richtlinie übereinstimmt.policyIndex
ist der Index der Richtlinie im Modell.policyLength
ist die Länge der Richtlinie.
Der obige Code veranschaulicht, wie die Parameter an die Funktion MergeEffects()
übergeben werden, und die Funktion verarbeitet die Effekte und Übereinstimmungen basierend auf dem expr
.
Um den Effector
zu verwenden, folgen Sie diesen Schritten:
- Go
var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
Die Grundidee von MergeEffects()
ist, dass wenn der expr
die Ergebnisse abgleichen kann, was darauf hinweist, dass der p_eft
allow
ist, dann können alle Effekte zusammengeführt werden. Wenn keine Verweigerungsregeln übereinstimmen, dann ist die Entscheidung erlauben.
Wenn der expr
nicht die Bedingung "priority(p_eft) || deny"
erfüllt und der policyIndex
kürzer ist als policyLength-1
, wird er einige Effekte in der Mitte kurzschließen.