Перейти к основному содержимому

Хранение политик

Хранение политик в Casbin осуществляется с помощью adapters. Энфорсер загружает и (опционально) сохраняет политику через API адаптера.

Загрузка политики из CSV-файла​

Использование CSV-файла является самым простым вариантом и хорошо подходит для разработки и примеров.

Пример: examples/rbac_policy.csv

p, alice, data1, read
p, bob, data2, write
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, data2_admin
примечание

Если поле содержит запятые, заключите его в двойные кавычки:

p, alice, "data1,data2", read --correct
p, alice, data1,data2, read --incorrect (the whole phrase "data1,data2" should be wrapped in double quotes)

Если поле содержит как запятые, так и двойные кавычки, заключите его в двойные кавычки и экранируйте внутренние кавычки путем удвоения:

p, alice, data, "r.act in (""get"", ""post"")" --correct
p, alice, data, "r.act in ("get", "post")" --incorrect (you should use "" to escape "")

См. casbin#886.

API адаптера​

МетодТипОписание
LoadPolicy()basicЗагружает все правила политики из хранилища
SavePolicy()basicСохраняет все правила политики в хранилище
AddPolicy()optionalДобавляет правило политики в хранилище
RemovePolicy()optionalУдаляет правило политики из хранилища
RemoveFilteredPolicy()optionalУдаляет из хранилища правила политики, соответствующие фильтру

Формат хранения в базе данных​

Пример политики (CSV)

p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, admin

Типичная структура базы данных (например, MySQL)

idptypev0v1v2v3v4v5
1pdata2_admindata2read
2pdata2_admindata2write
3galiceadmin

Столбцы

  • id — Первичный ключ (специфичен для адаптера; не является частью политики Casbin).
  • ptype — Тип политики: p, g, g2 и т. д.
  • v0–v5 — Поля политики по порядку (слева направо в CSV). Большинство адаптеров используют 6 столбцов; некоторые поддерживают больше. Если вам нужны дополнительные поля, проверьте документацию адаптера.

Полные сведения об API и дизайне адаптеров см. в разделе Adapters.

Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.