跳转至主要内容

域内基于角色的访问控制 API

一个更友好的域内基于角色的访问控制的API。 这个API是Management 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里, :: 是一个倒置的关键词, 就像编程语言中的关键字 for, if 一样,我们不应该在一个域中放置 ::

GetImplicitUsersForResourceByDomain()

GetImplicitUsersForResourceByDomain return implicit user based on resource and domain.

For example:

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") will return [["alice", "domain1", "data1", "read"],["alice", "domain1", "data1", "write"]], nil

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

Only users will be returned, roles (2nd arg in "g") will be excluded.