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:
Effectes la decisión final que se fusiona por esta función (inicializada comoIndeterminate).explainIndexes el índice deeft(AllowoDeny), y se inicializa como-1.errse utiliza para verificar si el efecto es compatible.expres la representación en cadena de los efectos de la política.effectses un arreglo de efectos, que pueden serAllow,IndeterminateoDeny.matcheses un arreglo que indica si el resultado coincide con la política.policyIndexes el índice de la política en el modelo.policyLengthes 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.