Casbin.NET是一个功能强大、效率高的.NET (C #)项目的开源访问控制库,是Casbin的其中一个语言分支。它支持基于各种访问控制模型实施授权。
Casbin支持的所有语言
支持的模型:
原理
在Casbin中,一个访问控制模型基于PERM元模型(策略、效果、请求、Matchers)抽象到一个CONF文件中。因此,切换或升级项目的授权机制就像修改配置一样简单。您可以通过组合可用的模型来定制自己的访问控制模型。例如,您可以在一个模型中同时获得RBAC角色和ABAC属性,并共享一组策略规则。
Casbin中最基本、最简单的模型是ACL。ACL的模型CONF为:
#Request definition
[request_definition]
r = sub, obj, act #Policy definition
[policy_definition]
p = sub, obj, act Policy effect
[policy_effect]
e = some(where (p.eft == allow)) Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
ACL模型的策略示例如下:
p, alice, data1, read
p, bob, data2, write
这表示:
#Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj \ && r.act == p.act
此外,如果你使用的是ABAC,你可以在Casbin golang版(目前不支持jCasbin和Node-Casbin)中尝试如下操作符:
#Matchers
[matchers]
m = r.obj == p.obj && r.act == p.act || r.obj in (‘data2’, ‘data3’)
但是您应该确保数组的长度大于1,否则会引起报警。
对于更多的操作符,您可以查看govaluate。
文档
https://casbin.org/docs/en/overview
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry’s standard dummy text ever since the 1500s
Thanks.