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:
Effectist die endgültige Entscheidung, die durch diese Funktion zusammengeführt wird (initialisiert alsIndeterminate).explainIndexist der Index voneft(AllowoderDeny) und wird als-1initialisiert.errwird verwendet, um zu überprüfen, ob der Effekt unterstützt wird.exprist die Zeichenkettenrepräsentation der Richtlinieneffekte.effectsist ein Array von Effekten, dieAllow,IndeterminateoderDenysein können.matchesist ein Array, das angibt, ob das Ergebnis mit der Richtlinie übereinstimmt.policyIndexist der Index der Richtlinie im Modell.policyLengthist 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.