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
(Allow
ouDeny
), 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
,Indeterminate
ouDeny
.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.