Ir al contenido principal

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:

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 como Indeterminate).
  • explainIndex es el índice de eft (Allow o Deny), 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 ser Allow, Indeterminate o Deny.
  • 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:

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.

nota

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.