Перейти до основного контенту

Effector

Effect представляє результат правила політики, а Effector - це інтерфейс для обробки ефектів у Casbin.

MergeEffects()

Функція MergeEffects() використовується для об'єднання всіх відповідних результатів, зібраних примусовим виконавцем, в одне рішення.

Наприклад:

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, слідуйте цим крокам:

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