التخطي إلى المحتوى الرئيسي

Policy Subset Loading

بعض المحولات تدعم إدارة السياسات المصفاة. وهذا يعني أن السياسة التي تم تحميلها بواسطة Casbin هي مجموعة فرعية من السياسة المخزنة في قاعدة البيانات بناءً على مرشح معين. هذا يسمح بتنفيذ السياسات بكفاءة في البيئات الكبيرة والمتعددة المستأجرين حيث يصبح تحليل السياسة بأكملها عائقًا أداء.

لاستخدام السياسات المصفاة مع محول مدعوم، ما عليك سوى استدعاء طريقة LoadFilteredPolicy. التنسيق الصالح لمعامل الفلتر يعتمد على المحول المستخدم. لمنع الفقد العرضي للبيانات، تم تعطيل طريقة SavePolicy عند تحميل سياسة مصفاة.

على سبيل المثال، المقتطف البرمجي التالي يستخدم المحول المصفى المدمج مع نموذج RBAC مع النطاقات. في هذه الحالة، يقتصر الفلتر على سياسة واحدة في المجال. أي سطور سياسة لمجالات أخرى غير "domain1" يتم حذفها من السياسة المحملة:

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".

هناك طريقة أخرى تدعم ميزة تحميل المجموعة الفرعية: LoadIncrementalFilteredPolicy. LoadIncrementalFilteredPolicy مشابه لـ LoadFilteredPolicy، ولكنه لا يمسح السياسة المحملة مسبقًا. إنه يضيف فقط السياسة المصفاة للسياسة الحالية.