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
, він буде переривати деякі ефекти посередині.