Pular para o conteúdo principal

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:

Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)

Neste exemplo:

  • Effect é a decisão final que é mesclada por esta função (inicializada como Indeterminate).
  • explainIndex é o índice de eft (Allow ou Deny), 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 ser Allow, Indeterminate ou Deny.
  • 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:

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.

nota

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.