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, он будет сокращать некоторые эффекты посередине.