Passer au contenu principal

Effector

L'Effect représente le résultat d'une règle de politique, et l'Effector est l'interface pour gérer les effets dans Casbin.

MergeEffects()

La fonction MergeEffects() est utilisée pour fusionner tous les résultats correspondants collectés par l'exécuteur en une seule décision.

Par exemple :

Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)

Dans cet exemple :

  • Effect est la décision finale qui est fusionnée par cette fonction (initialement définie comme Indeterminate).
  • explainIndex est l'index de eft (Allow ou Deny), et il est initialisé à -1.
  • err est utilisé pour vérifier si l'effet est pris en charge.
  • expr est la représentation en chaîne de caractères des effets de la politique.
  • effects est un tableau d'effets, qui peuvent être Allow, Indeterminate, ou Deny.
  • matches est un tableau qui indique si le résultat correspond à la politique.
  • policyIndex est l'index de la politique dans le modèle.
  • policyLength est la longueur de la politique.

Le code ci-dessus illustre comment passer les paramètres à la fonction MergeEffects(), et la fonction traitera les effets et les correspondances en fonction de l'expr.

Pour utiliser l'Effector, suivez ces étapes :

var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)

L'idée de base de MergeEffects() est que si l'expr peut correspondre aux résultats, indiquant que le p_eft est allow, alors tous les effets peuvent être fusionnés. Si aucune règle de refus n'est correspondante, alors la décision est d'autoriser.

note

Si l'expr ne correspond pas à la condition "priority(p_eft) || deny", et que l'policyIndex est plus court que policyLength-1, il court-circuitera certains effets au milieu.