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보다 짧다면, 중간의 일부 효과를 단락할 것입니다.