Effector
O Effect representa o resultado de uma regra de política, e o Effector é a interface para lidar com efeitos no Casbin.
MergeEffects()
A função MergeEffects() é usada para mesclar todos os resultados correspondentes coletados pelo executor em uma única decisão.
Por exemplo:
- Go
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
Neste exemplo:
Effecté a decisão final que é mesclada por esta função (inicializada comoIndeterminate).explainIndexé o índice deeft(AllowouDeny), e é inicializado como-1.erré usado para verificar se o efeito é suportado.expré a representação em string dos efeitos da política.effectsé um array de efeitos, que podem serAllow,IndeterminateouDeny.matchesé um array que indica se o resultado corresponde à política.policyIndexé o índice da política no modelo.policyLengthé o comprimento da política.
O código acima ilustra como passar os parâmetros para a função MergeEffects(), e a função processará os efeitos e correspondências com base no expr.
Para usar o Effector, siga estes passos:
- Go
var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
A ideia básica de MergeEffects() é que se o expr puder corresponder aos resultados, indicando que o p_eft é allow, então todos os efeitos podem ser mesclados. Se nenhuma regra de negação for correspondida, então a decisão é permitir.
Se o expr não corresponder à condição 'priority(p_eft) || deny', e o policyIndex for menor que policyLength-1, ele irá interromper alguns efeitos no meio.