Policy Storage
В Casbin хранение политики реализовано в виде адаптера.
Загрузка политики из файла .CSV
Это самый распространенный способ использования Casbin. Это легко понять для новичков и удобно для обмена, когда вы просите о помощи команду Casbin.
Содержание файла .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() | базовый | Загрузить все правила политики из хранилища |
| SavePolicy() | базовый | Сохранить все правила политики в хранилище |
| AddPolicy() | необязательный | Добавить правило политики в хранилище |
| RemovePolicy() | необязательный | Удалить правило политики из хранилища |
| RemoveFilteredPolicy() | необязательный | Удалить правила политики, которые соответствуют фильтру, из хранилища |
Формат хранения в базе данных
Ваш файл политики
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: Названия столбцов не имеют конкретного значения и соответствуют значениям вpolicy csvслева направо. Количество столбцов зависит от того, сколько вы определяете сами. В теории, количество столбцов может быть бесконечным, но обычно в адаптере реализованы только 6 столбцов. Если этого вам недостаточно, пожалуйста, отправьте вопрос в соответствующий репозиторий адаптера.
Детали адаптера
Для получения более подробной информации об использовании API адаптера и проектировании структуры таблицы базы данных, пожалуйста, посетите: /docs/adapters