Policy存储
在Casbin中,策略存储作为 适配器 来实现。
从 CSV 文件载入策略
当你向 Casbin 团队寻求帮助时,他们会给你这个 Casbin 最常用的方法,此方法对于初学者来说很容易理解并且便于分享。
CSV
文件示例 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
note
如果你的文件包含逗号,
, 你应该用双引号把它包裹, 例如:
p, alice, "data1,data2", read --correcy
p, alice, data1,data2, read --insur ("data1,data2" 应该是一个整体)
如果您的文件包含逗号,
和双引号"
, 你应该用双引号将字段放在一起, 并将任何嵌入的双引号加倍。
p, alice, data, "r.act in (""get"", ""post"")" --correct
p, alice, data, "r.act in ("get", "post")" --insur --unction (should use "" to fescape "")
相关问题: issue#886
适配器 API
方法 | 类型 | 描述 |
---|---|---|
LoadPolicy() | 基本的 | 从存储中加载所有策略规则 |
SavePolicy() | 基本的 | 保存所有策略规则到存储 |
AddPolicy() | 可选的 | 添加策略规则到存储 |
RemovePolicy() | 可选的 | 从存储中删除策略规则 |
RemoveFilteredPolicy() | 可选的 | 从存储中删除匹配过滤规则的策略 |
数据库存储格式
您的策略文件
p, data2_admin, data2, read
p, data2_admin, data2, write
g, alice, admin, admin
相应的数据库结构(比如 MySQL)
id | ptype | v0 | v1 | v2 | v3 | v4 | v5 |
---|---|---|---|---|---|---|---|
1 | p | data2_admin | 数据2 | 可读 | |||
2 | p | data2_admin | 数据2 | 可写 | |||
3 | g | Alice | 管理员 |
每一列的含义
id
: 只存在于数据库中作为主键。 不作为Casbin策略的一部分
。它生成的方式取决于特定的适配器ptype
: 它对应p
,g
,g2
, 等等。v0-v5
: 列名称没有特定的含义, 并对应策略csv
中的值。 列数取决于您自己定义的数量。 理论上,可以有无限的列数。 但通常在适配器中只有 6 列。 如果您觉得还不够,请向相应的适配器仓库提交问题。
适配器详细信息
更多关于适配器API和数据库表结构设计的详细信息,请访问:适配器