跳转至主要内容

RBAC with Domains API

一个更用户友好的RBAC与域的API。 此API是管理API的一个子集。 RBAC用户可以使用此API简化他们的代码。

参考

全局变量e代表Enforcer实例。

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

GetUsersForRoleInDomain()

GetUsersForRoleInDomain()函数检索在域内具有角色的用户。

例如:

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

GetRolesForUserInDomain()

GetRolesForUserInDomain()函数检索用户在域内拥有的角色。

例如:

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

GetPermissionsForUserInDomain()

GetPermissionsForUserInDomain()函数检索用户或角色在域内的权限。

例如:

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

AddRoleForUserInDomain()

AddRoleForUserInDomain()函数为域内的用户添加角色。 如果用户已经拥有该角色(没有做出改变),它将返回false

例如:

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

DeleteRoleForUserInDomain()

DeleteRoleForUserInDomain()函数删除用户在域内的角色。 如果用户没有该角色(没有做出改变),它将返回false

例如:

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

DeleteRolesForUserInDomain()

DeleteRolesForUserInDomain()函数删除用户在域内的所有角色。 如果用户没有任何角色(没有做出改变),它将返回false

例如:

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

GetAllUsersByDomain()

GetAllUsersByDomain()函数检索与给定域关联的所有用户。 如果在模型中没有定义域,它将返回一个空的字符串数组。

例如:

res := e.GetAllUsersByDomain("domain1")

DeleteAllUsersByDomain()

DeleteAllUsersByDomain()函数删除与给定域关联的所有用户。 如果在模型中没有定义域,它将返回false

例如:

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

DeleteDomains()

DeleteDomains将删除所有关联的用户和角色。 如果没有提供参数,它将删除所有域。

例如:

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

GetAllDomains()

GetAllDomains将获取所有域。

例如:

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

如果你正在处理像name::domain这样的域,它可能会导致意外的行为。 在Casbin中,::是一个保留关键字,就像编程语言中的forif,我们永远不应该在域中放置::

GetAllRolesByDomain()

GetAllRolesByDomain将获取与域关联的所有角色。

例如:

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

此方法不适用于具有继承关系的域,也称为隐式角色。

GetImplicitUsersForResourceByDomain()

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")将返回[["alice", "domain1", "data1", "read"],["alice", "domain1", "data1", "write"]], nil

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

只会返回用户,角色("g"中的第二个参数)将被排除。