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 policy
. Спосіб його генерації залежить від конкретного адаптера.ptype
: Відповідаєp
,g
,g2
тощо.v0-v5
: Назви колонок не мають конкретного значення і відповідають значенням уpolicy csv
зліва направо. Кількість колонок залежить від того, скільки ви визначите самі. Теоретично, може бути нескінченна кількість колонок, але зазвичай в адаптері реалізовано лише 6 колонок. Якщо цього недостатньо для вас, будь ласка, надішліть проблему до відповідного репозиторію адаптера.
Деталі адаптера
Для отримання додаткової інформації про використання API адаптера та дизайн структури таблиці бази даних, будь ласка, відвідайте: /docs/adapters