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