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

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)

idptypev0v1v2v3v4v5
1pdata2_admindata2read
2pdata2_admindata2write
3galiceadmin

Значение каждого столбца

  • id: Первичный ключ в базе данных. Он не существует как часть политики casbin. Способ его генерации зависит от конкретного адаптера.

  • ptype: Он соответствует p, g, g2 и т.д.

  • v0-v5: Названия столбцов не имеют конкретного значения и соответствуют значениям в policy csv слева направо. Количество столбцов зависит от того, сколько вы определяете сами. В теории, количество столбцов может быть бесконечным, но обычно в адаптере реализованы только 6 столбцов. Если этого вам недостаточно, пожалуйста, отправьте вопрос в соответствующий репозиторий адаптера.

Детали адаптера

Для получения более подробной информации об использовании API адаптера и проектировании структуры таблицы базы данных, пожалуйста, посетите: /docs/adapters