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
(Consenti
oNega
), 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ò 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.