**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ètre | Description |
|---|---|
expr | Chaîne d'expression de l'effet de la politique (par ex. du modèle). |
effects | Slice des effets : Allow, Deny, ou Indeterminate. |
matches | Indices des politiques qui ont correspondu. |
policyIndex | Indice de la politique actuelle. |
policyLength | Nombre total de politiques. |
Valeurs de retour :
- Effect — Décision finale (
Allow,Deny, ouIndeterminate). - explainIndex — Indice de la politique qui a déterminé le résultat (
-1si 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).
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.