Bỏ qua đến nội dung chính

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ụ:

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ủa eft (Allow hoặc Deny), 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ặc Deny.
  • 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:

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_eftallow, 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.

ghi chú

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.