Effektor
Der Effekt ist das Ergebnis einer politischen Regel. Und der Effector ist die Schnittstelle für Casbin Effekte.
MergeEffects()
MergeEffects vereint alle vom Durchsetzer gesammelten übereinstimmenden Ergebnisse in einer einzigen Entscheidung.
Zum Beispiel:
- Go
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
In diesem Beispiel:
Effektist die endgültige Entscheidung, die von dieser Funktion zusammengeführt wird (Initialisiert alsUndeterminate).explainIndexist der Index voneft, derErlaubtoderAblehnen.(Initialisiert als-1)Fr.wird verwendet um zu überprüfen, ob der Effekt unterstützt wird.exprist der Richtlinieneffekt, der alsString gespeichert wirdEffekteist das Array des Effekts, dasErlaube,UnbestimmtoderAblehnenentsprichtdem Array, das zeigt, dass wenn das Ergebnis mit der Richtlinie übereinstimmt.policyIndexist der Index der Richtlinien im Modell.PolicyLengthist die Länge der Richtlinie.
Der obige Code zeigt, wie wir die Parameter an die MergeEffects Funktion übergeben können und die Funktion verarbeitet die Effekte und Übereinstimmungen basierend auf dem expr
Um einen Effekt zu installieren, können wir dies tun:
- Go
var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
Die Grundidee der MergeEffects zeigt an, dass, wenn die expr die Ergebnisse übereinstimmen kann, das bedeutet, dass p_eft erlaubt ist, dann können wir endlich alle Effekte zusammenführen. Und wenn es keine Abrede gibt, dann lassen wir es zu.
Wenn der expr nicht übereinstimmen kann "priority(p_eft) || deny" und auch der policyIndex ist kürzer als policyLength-1, es wird Kurzschluss einige Effekte in der Mitte.