Aller au contenu principal

**Effector**

L'Effect est le résultat d'une règle de politique (allow ou deny). L'interface Effector définit comment l'enforcer combine plusieurs effets correspondants en une seule décision.

MergeEffects()​

MergeEffects() prend tous les effets des politiques correspondantes et produit un seul résultat final allow/deny.

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

Paramètres :

ParamètreDescription
exprChaîne d'expression de l'effet de la politique (par ex. du modèle).
effectsSlice des effets : Allow, Deny, ou Indeterminate.
matchesIndices des politiques qui ont correspondu.
policyIndexIndice de la politique actuelle.
policyLengthNombre total de politiques.

Valeurs de retour :

  • Effect — Décision finale (Allow, Deny, ou Indeterminate).
  • explainIndex — Indice de la politique qui a déterminé le résultat (-1 si non applicable).
  • err — Non-nil si l'effector ne supporte pas l'expression.

Utilisation d'un Effector personnalisé :

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

Pour l'effet standard allow-override, le résultat est allow si au moins une politique correspondante permet et aucune ne refuse. Les effectors personnalisés implémentent d'autres sémantiques (par ex. deny-override, priority).

remarque

Sauf si l'expression d'effet est priority(p_eft) || deny, l'enforcer peut s'arrêter prématurément : une fois le résultat déterminé, les politiques restantes ne sont pas évaluées. Ainsi, lorsque policyIndex < policyLength-1, certains effets peuvent être ignorés.

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.