Effector
Effect представляє результат правила політики, а Effector - це інтерфейс для обробки ефектів у Casbin.
MergeEffects()
Функція MergeEffects() використовується для об'єднання всіх відповідних результатів, зібраних примусовим виконавцем, в одне рішення.
Наприклад:
- 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, він буде переривати деякі ефекти посередині.