ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
在 Casbin 中, 访问控制模型被抽象为基于 **PERM (Policy, Effect, Request, Matcher)** 的一个文件。 因此,切换或升级项目的授权机制与修改配置一样简单。 您可以通过组合可用的模型来定制您自己的访问控制模型。 例如,您可以在一个model中获得RBAC角色和ABAC属性,并共享一组policy规则。 Casbin中最基本、最简单的`model`是ACL。ACL中的`Model` CONF为: ```ini # 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 `Model`的示例`Policy`如下: ``` p, alice, data1, read p, bob, data2, write ``` 这表示: - alice 对 data1 有读权限 - bob 对 data2 有写权限 对于过长的单行配置,您也可以通过在结尾处添加`“\”`进行断行: ``` # Matchers [matchers] m = r.sub == p.sub && r.obj == p.obj \ && r.act == p.act ``` 此外,对于 ABAC,您在可以在 Casbin golang 和 php 版本中尝试下面的 (jCasbin 和 Node-Casbin 尚不支持)操作: ``` # Matchers [matchers] m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3') ``` 但是你应确保数组的长度大于 1,否则的话将会导致异常 。