跳转到主要内容

带域的 RBAC API

带域 RBAC 的便捷 API:按域划分范围的用户—角色和权限操作。它是 Management API 的子集。下文中,e 是加载了支持域的 model 的 Enforcer 实例。

参考​

e, err := NewEnforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv")

GetUsersForRoleInDomain​

返回在指定域中拥有指定角色的所有用户。

res := e.GetUsersForRoleInDomain("admin", "domain1")

GetRolesForUserInDomain​

返回指定用户在该域中被分配的所有角色。

res := e.GetRolesForUserInDomain("alice", "domain1")

GetPermissionsForUserInDomain​

返回该用户或角色在指定域中的所有权限(policy 规则)。

res := e.GetPermissionsForUserInDomain("alice", "domain1")

AddRoleForUserInDomain​

在域中为用户分配该角色。如果分配已存在,返回 false。

ok, err := e.AddRoleForUserInDomain("alice", "admin", "domain1")

DeleteRoleForUserInDomain​

在域中移除用户的该角色。如果该关联原本不存在,返回 false。

ok, err := e.DeleteRoleForUserInDomain("alice", "admin", "domain1")

DeleteRolesForUserInDomain​

移除用户在域中的所有角色。如果该用户在域中没有角色,返回 false。

ok, err := e.DeleteRolesForUserInDomain("alice", "domain1")

GetAllUsersByDomain​

返回在指定域中至少拥有一个角色的所有用户。如果 model 中没有域,返回为空。

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain​

移除指定域中的所有用户—角色分配。如果 model 中没有域,返回 false。

ok, err := e.DeleteAllUsersByDomain("domain1")

DeleteDomains​

移除指定域中的所有用户和角色。不带参数时,清空所有域。

ok, err := e.DeleteDomains("domain1", "domain2")

GetAllDomains​

返回 policy 中出现的所有域。

res, _ := e.GetAllDomains()
注意

不要在域名中使用 ::;它在 Casbin 表达式语法中是被保留的。

GetAllRolesByDomain​

返回在指定域中出现的所有角色。

res := e.GetAllRolesByDomain("domain1")
备注

不包含通过层级继承的角色(隐式角色);仅包含域中直接分配的角色。

GetImplicitUsersForResourceByDomain​

返回给定资源和域的隐式用户(及其权限),即通过其角色在该域中对该资源拥有权限的用户。

p, admin, domain1, data1, read
p, admin, domain1, data1, write
p, admin, domain2, data2, read
p, admin, domain2, data2, write
g, alice, admin, domain1
g, bob, admin, domain2

示例:使用下面的 policy,GetImplicitUsersForResourceByDomain("data1", "domain1") 返回可以在 domain1 中访问 data1 的用户的权限(例如通过 admin 角色的 alice)。

ImplicitUsers, err := e.GetImplicitUsersForResourceByDomain("data1", "domain1")
备注

只返回用户级别的结果;角色名(g 规则中的第二个元素)不列出。