Zum Hauptinhalt springen

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:

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 als Indeterminate).
  • explainIndex ist der Index von eft (Allow oder Deny) 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, die Allow, Indeterminate oder Deny 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:

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.

notiz

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.