Хранение политик
Хранение политик в 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)
| id | ptype | v0 | v1 | v2 | v3 | v4 | v5 |
|---|---|---|---|---|---|---|---|
| 1 | p | data2_admin | data2 | read | |||
| 2 | p | data2_admin | data2 | write | |||
| 3 | g | alice | admin |
Столбцы
- 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.