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")
const e = await newEnforcer('examples/rbac_with_domains_model.conf', 'examples/rbac_with_domains_policy.csv')
$e = new Enforcer('examples/rbac_with_domains_model.conf', 'examples/rbac_with_domains_policy.csv');
e = casbin.Enforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv")
var e = new Enforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv");
let mut e = Enforcer::new("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv").await?;
Enforcer e = new Enforcer("examples/rbac_with_domains_model.conf", "examples/rbac_with_domains_policy.csv");
GetUsersForRoleInDomain
返回在给定域中拥有给定角色的所有用户。
res := e.GetUsersForRoleInDomain("admin", "domain1")
const res = e.getUsersForRoleInDomain("admin", "domain1")
res = e.get_users_for_role_in_domain("admin", "domain1")
GetRolesForUserInDomain
返回在给定域中分配给该用户的所有角色。
res := e.GetRolesForUserInDomain("alice", "domain1")
const res = e.getRolesForUserInDomain("alice", "domain1")
res = e.get_roles_for_user_in_domain("alice", "domain1")
List<String> res = e.getRolesForUserInDomain("admin", "domain1");
GetPermissionsForUserInDomain
返回用户或角色在给定域中的所有权限(策略规则)。
res := e.GetPermissionsForUserInDomain("alice", "domain1")
List<List<String>> res = e.getPermissionsForUserInDomain("alice", "domain1");
AddRoleForUserInDomain
在域中给用户分配角色。如果该分配已存在,返回 false。
ok, err := e.AddRoleForUserInDomain("alice", "admin", "domain1")
ok = e.add_role_for_user_in_domain("alice", "admin", "domain1")
boolean ok = e.addRoleForUserInDomain("alice", "admin", "domain1");
DeleteRoleForUserInDomain
在域中移除用户的角色。如果该关联不存在,返回 false。
ok, err := e.DeleteRoleForUserInDomain("alice", "admin", "domain1")
boolean ok = 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 规则中的第二个元素)。