Vai al contenuto principale

Effector

L'Effetto rappresenta il risultato di una regola di politica, e l'Effettuatore è l'interfaccia per gestire gli effetti in Casbin.

MergeEffects()

La funzione MergeEffects() viene utilizzata per unire tutti i risultati di corrispondenza raccolti dall'enforcer in una singola decisione.

Ad esempio:

Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)

In questo esempio:

  • Effetto è la decisione finale che viene unita da questa funzione (inizializzata come Indeterminato).
  • explainIndex è l'indice di eft (Consenti o Nega), e viene inizializzato come -1.
  • err viene utilizzato per verificare se l'effetto è supportato.
  • expr è la rappresentazione in stringa degli effetti della politica.
  • effects è un array di effetti, che può essere Consenti, Indeterminato, o Nega.
  • matches è un array che indica se il risultato corrisponde alla policy.
  • policyIndex è l'indice della policy nel modello.
  • policyLength è la lunghezza della policy.

Il codice sopra illustra come passare i parametri alla funzione MergeEffects(), e la funzione processerà gli effetti e le corrispondenze in base all'expr.

Per utilizzare l'Effector, segui questi passaggi:

var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)

L'idea di base di MergeEffects() è che se l'expr può corrispondere ai risultati, indicando che il p_eft è allow, allora tutti gli effetti possono essere fusi. Se nessuna regola di negazione è abbinata, allora la decisione è di consentire.

nota

Se l'expr non corrisponde alla condizione "priority(p_eft) || deny", e il policyIndex è più corto di policyLength-1, si cortocircuiteranno alcuni effetti nel mezzo.