Effector
El Effect
representa el resultado de una regla de política, y el Effector
es la interfaz para manejar efectos en Casbin.
MergeEffects()
La función MergeEffects()
se utiliza para combinar todos los resultados coincidentes recopilados por el enforcer en una única decisión.
Por ejemplo:
- Go
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
En este ejemplo:
Effect
es la decisión final que se fusiona por esta función (inicializada comoIndeterminate
).explainIndex
es el índice deeft
(Allow
oDeny
), y se inicializa como-1
.err
se utiliza para verificar si el efecto es compatible.expr
es la representación en cadena de los efectos de la política.effects
es un arreglo de efectos, que pueden serAllow
,Indeterminate
oDeny
.matches
es un arreglo que indica si el resultado coincide con la política.policyIndex
es el índice de la política en el modelo.policyLength
es la longitud de la política.
El código anterior ilustra cómo pasar los parámetros a la función MergeEffects()
, y la función procesará los efectos y coincidencias basados en el expr
.
Para usar el Effector
, sigue estos pasos:
- Go
var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
La idea básica de MergeEffects()
es que si el expr
puede coincidir con los resultados, indicando que el p_eft
es allow
, entonces todos los efectos se pueden fusionar. Si no se coinciden con reglas de denegación, entonces la decisión es permitir.
Si el expr
no coincide con la condición 'priority(p_eft) || deny'
, y el policyIndex
es más corto que policyLength-1
, se cortocircuitará algunos efectos en el medio.