Effector
Effect
đại diện cho kết quả của một quy tắc chính sách, và Effector
là giao diện để xử lý các hiệu ứng trong Casbin.
MergeEffects()
Hàm MergeEffects()
được sử dụng để kết hợp tất cả các kết quả khớp được thu thập bởi enforcer thành một quyết định duy nhất.
Ví dụ:
- Go
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
Trong ví dụ này:
Effect
là quyết định cuối cùng được kết hợp bởi hàm này (khởi tạo làIndeterminate
).explainIndex
là chỉ số củaeft
(Allow
hoặcDeny
), và nó được khởi tạo là-1
.err
được sử dụng để kiểm tra xem hiệu ứng có được hỗ trợ hay không.expr
là biểu diễn chuỗi của các hiệu ứng chính sách.effects
là một mảng các hiệu ứng, có thể làAllow
,Indeterminate
, hoặcDeny
.matches
là một mảng cho biết kết quả có khớp với chính sách hay không.policyIndex
là chỉ số của chính sách trong mô hình.policyLength
là độ dài của chính sách.
Đoạn mã trên minh họa cách truyền tham số cho hàm MergeEffects()
, và hàm này sẽ xử lý các hiệu ứng và kết quả dựa trên expr
.
Để sử dụng Effector
, hãy làm theo các bước sau:
- Go
var e Effector
Effect, explainIndex, err = e.MergeEffects(expr, effects, matches, policyIndex, policyLength)
Ý tưởng cơ bản của MergeEffects()
là nếu expr
có thể khớp với kết quả, chỉ ra rằng p_eft
là allow
, thì tất cả các hiệu ứng có thể được hợp nhất. Nếu không có quy tắc từ chối nào được khớp, thì quyết định là cho phép.
Nếu expr
không khớp với điều kiện "priority(p_eft) || deny"
, và policyIndex
ngắn hơn policyLength-1
, nó sẽ short-circuit một số hiệu ứng ở giữa.