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:
- Go
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
In questo esempio:
Effettoè la decisione finale che viene unita da questa funzione (inizializzata comeIndeterminato).explainIndexè l'indice dieft(ConsentioNega), e viene inizializzato come-1.errviene utilizzato per verificare se l'effetto è supportato.exprè la rappresentazione in stringa degli effetti della politica.effectsè un array di effetti, che può essereConsenti,Indeterminato, oNega.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:
- Go
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.
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.