Lewati ke konten utama

Policy Subset Loading

Beberapa adapter mendukung manajemen kebijakan terfilter. Ini berarti bahwa kebijakan yang dimuat oleh Casbin adalah subset dari kebijakan yang disimpan di database berdasarkan filter tertentu. Hal ini memungkinkan penerapan kebijakan yang efisien di lingkungan besar dan multi-penyewa di mana penguraian seluruh kebijakan menjadi kendala kinerja.

Untuk menggunakan kebijakan terfilter dengan adapter yang didukung, cukup panggil metode LoadFilteredPolicy. Format yang valid untuk parameter filter bergantung pada adapter yang digunakan. Untuk mencegah kehilangan data secara tidak sengaja, metode SavePolicy dinonaktifkan ketika kebijakan terfilter dimuat.

Sebagai contoh, cuplikan kode berikut menggunakan adaptor file terfilter bawaan dan model RBAC dengan domain. Dalam hal ini, filter membatasi kebijakan ke satu domain. Setiap baris kebijakan untuk domain selain "domain1" dihilangkan dari kebijakan yang dimuat:

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

Ada metode lain yang mendukung fitur pemuatan subset: LoadIncrementalFilteredPolicy. LoadIncrementalFilteredPolicy mirip dengan LoadFilteredPolicy, tetapi tidak menghapus kebijakan yang sebelumnya dimuat. Ia hanya menambahkan kebijakan terfilter ke kebijakan yang sudah ada.