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

Policy Subset Loading

Một số bộ điều hợp hỗ trợ quản lý chính sách đã lọc. Điều này có nghĩa là chính sách được tải bởi Casbin là một phần của chính sách được lưu trữ trong cơ sở dữ liệu dựa trên bộ lọc đã cho. Điều này cho phép thực thi chính sách hiệu quả trong môi trường lớn, đa đối tượng, nơi việc phân tích toàn bộ chính sách trở thành nút thắt cổ chai về hiệu suất.

Để sử dụng chính sách đã lọc với một bộ điều hợp được hỗ trợ, chỉ cần gọi phương thức LoadFilteredPolicy. Định dạng hợp lệ cho tham số bộ lọc phụ thuộc vào bộ điều hợp được sử dụng. Để ngăn ngừa mất dữ liệu do nhầm lẫn, phương thức SavePolicy bị vô hiệu hóa khi một chính sách đã được lọc được tải lên.

Ví dụ, đoạn mã sau sử dụng bộ điều hợp tệp tin đã lọc tích hợp sẵn và mô hình RBAC với các miền. Trong trường hợp này, bộ lọc giới hạn chính sách cho một miền duy nhất. Bất kỳ dòng chính sách nào cho các miền khác ngoài "domain1" đều bị bỏ qua trong chính sách đã tải:

import (
"github.com/casbin/casbin/v2"
fileadapter "github.com/casbin/casbin/v2/persist/file-adapter"
)

enforcer, _ := casbin.NewEnforcer()

adapter := fileadapter.NewFilteredAdapter("examples/rbac_with_domains_policy.csv")
enforcer.InitWithAdapter("examples/rbac_with_domains_model.conf", adapter)

filter := &fileadapter.Filter{
P: []string{"", "domain1"},
G: []string{"", "", "domain1"},
}
enforcer.LoadFilteredPolicy(filter)

// The loaded policy now only contains the entries pertaining to "domain1".

Có một phương thức khác hỗ trợ tính năng tải tập hợp con: LoadIncrementalFilteredPolicy. LoadIncrementalFilteredPolicy tương tự như LoadFilteredPolicy, nhưng nó không xóa chính sách đã tải trước đó. Nó chỉ thêm chính sách đã lọc vào chính sách hiện có.