Загрузка подмножества политик
Некоторые адаптеры поддерживают управление отфильтрованной политикой. Это означает, что политика, загруженная Casbin, является подмножеством политики хранения на основе данного фильтра. Это позволяет эффективно осуществлять политику в крупных многоквартирных условиях при анализе всей политики становится узким препятствием на пути к ее осуществлению.
Чтобы использовать фильтрованные политики с поддерживаемым адаптером, просто вызовите метод LoadFilteredPolicy
. Допустимый формат для параметра фильтра зависит от используемого адаптера. Для предотвращения случайных потерь данных метод SavePolicy
отключен при загрузке фильтрованной политики.
Например, следующий фрагмент кода использует встроенный фильтрованный файловый адаптер и модель RBAC с доменами. В этом случае фильтр ограничивает политику одним доменом. Любые строки политики для доменов, отличных от «домена1»
исключены из загруженной политики:
импортируйте "github.com/casbin/casbin"
enforcer := casbin.NewEnforcer()
адаптер := fileadapter.NewFilteredAdapter("examples/rbac_with_domains_policy.csv")
enforcer.InitWithAdapter("examples/rbac_with_domains_model.conf", адаптер)
фильтр := &fileadapter. ilter{
P: []string{"", "domain1"},
G: []string{"", "", "domain1"},
}
enforcer. oadFilteredPolicy(filter)
// Теперь загруженная политика содержит только записи, относящиеся к "domain1".
Существует еще один метод поддержки загрузки подмножеств: LoadIncrementalFilteredPolicy
. LoadIncrementalFilteredPolicy
похож на LoadFilteredPolicy, но он не очищает предыдущую загруженную политику, только добавляет.