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 :
Effectest la décision finale qui est fusionnée par cette fonction (initialement définie commeIndeterminate).explainIndexest l'index deeft(AllowouDeny), et il est initialisé à-1.errest utilisé pour vérifier si l'effet est pris en charge.exprest la représentation en chaîne de caractères des effets de la politique.effectsest un tableau d'effets, qui peuvent êtreAllow,Indeterminate, ouDeny.matchesest un tableau qui indique si le résultat correspond à la politique.policyIndexest l'index de la politique dans le modèle.policyLengthest 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.