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 :
- Go
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 commeIndeterminate
).explainIndex
est l'index deeft
(Allow
ouDeny
), 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 êtreAllow
,Indeterminate
, ouDeny
.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 :
- Go
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.
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.