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。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.