跳转至主要内容

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:它对应于pgg2等。

  • v0-v5:列名没有具体的含义,对应于策略csv中从左到右的值。 列的数量取决于你自己定义的数量。 理论上,可以有无限多的列,但适配器中通常只实现了6列。 如果这对你来说还不够,请向相应的适配器仓库提交问题。

适配器详情

关于适配器API的使用和数据库表结构设计的更多细节,请访问:/docs/adapters