企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 支持域/租户的RBAC ## 域/租户的角色定义 在Casbin中的RBAC角色可以是全局或是基于特定于域的。 特定域的角色意味着当用户处于不同的域/租户群体时,用户所表现的角色也不尽相同。 这对于像云服务这样的大型系统非常有用,因为用户通常分属于不同的租户群体。 域/租户的角色定义应该类似于: ~~~ini [role_definition] g = _, _, _ ~~~ 第三个`_`表示域/租户的名称, 此部分不应更改。 然后,政策可以是: ~~~ p, admin, tenant1, data1, read p, admin, tenant2, data2, read g, alice, admin, tenant1 g, alice, user, tenant2 ~~~ 该实例表示`tenant1`的域内角色`admin`可以读取`data1`,`alice`在`tenant1`域中具有`admin`角色,但在`tenant2`域中具有`user`角色, 所以alice可以有读取`data1`的权限。 同理,因为`alice`不是`tenant2`的`admin`,所以她访问不了`data2`。 接下来在matcher中,应该像下面的例子一样检查角色信息: ~~~ini [matchers] m = g(r.sub, p.sub, r.dom) && r.dom == p.dom && r.obj == p.obj && r.act == p.act ~~~ 更多示例参见:[rbac\_with\_domains\_model.conf](https://github.com/casbin/casbin/blob/master/examples/rbac_with_domains_model.conf)。