跳转至主要内容

RBAC with Domains API

带域的 RBAC 的便捷 API:按域划分的用户与角色、权限操作。它是 Management API 的一个子集。下文中 e 是加载了支持域的模型的 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​

返回用户或角色在给定域中的所有权限(策略规则)。

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​

返回在给定域中至少有一个角色的所有用户。如果模型没有域,返回空。

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain​

删除给定域中所有的用户与角色分配。如果模型没有域,返回 false。

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

DeleteDomains​

删除给定域中的所有用户和角色。不传参数时清空所有域。

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

GetAllDomains​

返回策略中出现的所有域。

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

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

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

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