RoleManager API
RoleManager
RoleManager提供了一个定义管理角色操作的接口。 向RoleManager添加匹配函数后,可以在角色名称和域中使用通配符。
AddNamedMatchingFunc()
AddNamedMatchingFunc
函数将MatchingFunc
按Ptype添加到RoleManager。 执行角色匹配时将使用MatchingFunc
。
- Go
- Node.js
e.AddNamedMatchingFunc("g", "", util.KeyMatch)
_, _ = e.AddGroupingPolicies([][]string{{"*", "admin", "domain1"}})
_, _ = e.GetRoleManager().HasLink("bob", "admin", "domain1") // -> true, nil
await e.addNamedMatchingFunc('g', Util.keyMatchFunc);
await e.addGroupingPolicies([['*', 'admin', 'domain1']]);
await e.getRoleManager().hasLink('bob', 'admin', 'domain1');
例如:
- Go
- Node.js
e, _ := casbin.NewEnforcer("path/to/model", "path/to/policy")
e.AddNamedMatchingFunc("g", "", util.MatchKey)
const e = await newEnforcer('path/to/model', 'path/to/policy');
await e.addNamedMatchingFunc('g', Util.keyMatchFunc);
AddNamedDomainMatchingFunc()
AddNamedDomainMatchingFunc
函数将MatchingFunc
按Ptype添加到RoleManager。 DomainMatchingFunc
与上述的MatchingFunc
类似。
例如:
- Go
- Node.js
e, _ := casbin.NewEnforcer("path/to/model", "path/to/policy")
e.AddNamedDomainMatchingFunc("g", "", util.MatchKey)
const e = await newEnforcer('path/to/model', 'path/to/policy');
await e.addNamedDomainMatchingFunc('g', Util.keyMatchFunc);
GetRoleManager()
GetRoleManager
函数获取g
的当前角色管理器。
例如:
- Go
- Node.js
- Python
rm := e.GetRoleManager()
const rm = await e.getRoleManager();
rm = e.get_role_manager()
GetNamedRoleManager()
GetNamedRoleManager
函数通过命名的Ptype获取角色管理器。
例如:
- Go
- Node.js
- Python
rm := e.GetNamedRoleManager("g2")
const rm = await e.getNamedRoleManager("g2");
rm = e.get_named_role_manager("g2")
SetRoleManager()
SetRoleManager
函数为g
设置当前的角色管理器。
例如:
- Go
- Node.js
- Python
e.SetRoleManager(rm)
e.setRoleManager(rm);
rm = e.set_role_manager(rm)
SetNamedRoleManager()
SetNamedRoleManager
函数通过命名的Ptype设置角色管理器。
例如:
- Go
- Python
rm := e.SetNamedRoleManager("g2", rm)
rm = e.set_role_manager("g2", rm)
Clear()
Clear
函数清除所有存储的数据,并将角色管理器重置为其初始状态。
例如:
- Go
- Node.js
- Python
rm.Clear()
await rm.clear();
rm.clear()
AddLink()
AddLink添加了两个角色之间的继承链接。 角色:name1和角色:name2。 域是角色的前缀(可以用于其他目的)。
例如:
- Go
- Node.js
- Python
rm.AddLink("u1", "g1", "domain1")
await rm.addLink('u1', 'g1', 'domain1');
rm.add_link("u1", "g1", "domain1")
DeleteLink()
DeleteLink删除了两个角色之间的继承链接。 角色:name1和角色:name2。 域是角色的前缀(可以用于其他目的)。
例如:
- Go
- Node.js
- Python
rm.DeleteLink("u1", "g1", "domain1")
await rm.deleteLink('u1', 'g1', 'domain1');
rm.delete_link("u1", "g1", "domain1")
HasLink()
HasLink确定两个角色之间是否存在链接。 角色:name1继承角色:name2。 域是角色的前缀(可以用于其他目的)。
例如:
- Go
- Node.js
- Python
rm.HasLink("u1", "g1", "domain1")
await rm.hasLink('u1', 'g1', 'domain1');
rm.has_link("u1", "g1", "domain1")
GetRoles()
GetRoles获取用户继承的角色。 域是角色的前缀(可以用于其他目的)。
例如:
- Go
- Node.js
- Python
rm.GetRoles("u1", "domain1")
await rm.getRoles('u1', 'domain1');
rm.get_roles("u1", "domain")
GetUsers()
GetUsers获取继承角色的用户。 域是用户的前缀(可以用于其他目的)。
例如:
- Go
- Node.js
- Python
rm.GetUsers("g1")
await rm.getUsers('g1');
rm.get_users("g1")
PrintRoles()
PrintRoles将所有角色打印到日志。
例如:
- Go
- Node.js
- Python
rm.PrintRoles()
await rm.printRoles();
rm.print_roles()
SetLogger()
SetLogger设置角色管理器的记录器。
例如:
- Go
logger := log.DefaultLogger{}
logger.EnableLog(true)
rm.SetLogger(&logger)
_ = rm.PrintRoles()
GetDomains()
GetDomains获取用户拥有的域
例如:
- Go
result, err := rm.GetDomains(name)