Effector
Effect
는 정책 규칙의 결과를 나타내며, Effector
는 Casbin에서 효과를 처리하는 인터페이스입니다.
MergeEffects()
MergeEffects()
함수는 enforcer가 수집한 모든 일치 결과를 단일 결정으로 병합하는 데 사용됩니다.
예를 들어:
- Go
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
이 예에서:
Effect
는 이 함수에 의해 병합된 최종 결정입니다(Indeterminate
로 초기화됨).explainIndex
는eft
의 인덱스(Allow
또는Deny
)이며,-1
로 초기화됩니다.err
는 효과가 지원되는지 확인하는 데 사용됩니다.expr
는 정책 효과의 문자열 표현입니다.effects
는 효과의 배열로,Allow
,Indeterminate
, 또는Deny
가 될 수 있습니다.matches
는 결과가 정책과 일치하는지 여부를 나타내는 배열입니다.policyIndex
는 모델에서의 정책 인덱스입니다.policyLength
는 정책의 길이입니다.
위의 코드는 MergeEffects()
함수에 매개변수를 전달하는 방법을 보여주며, 함수는 expr
에 기반하여 효과와 일치 항목을 처리합니다.
Effector
를 사용하려면 다음 단계를 따르십시오:
- Go
var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
MergeEffects()
의 기본 아이디어는 expr
이 결과와 일치할 수 있음을 나타내어, p_eft
가 allow
이면 모든 효과를 병합할 수 있다는 것입니다. 거부 규칙이 일치하지 않으면 결정은 허용입니다.
노트
만약 expr
이 조건 "priority(p_eft) || deny"
와 일치하지 않고, policyIndex
가 policyLength-1
보다 짧다면, 중간의 일부 효과를 단락할 것입니다.