Role Manager API
RoleManager 인터페이스는 역할 계층 구조와 사용자–역할 링크가 어떻게 저장되고 쿼리되는지를 정의합니다. **매칭 함수(matching functions)**를 연결하여 역할 또는 도메 인 이름의 와일드카드(예: *)를 지원할 수 있습니다. 아래에서 e는 Enforcer이고 rm은 RoleManager입니다.
RoleManager API
AddNamedMatchingFunc
정책 유형(예: g)에 대한 매칭 함수를 등록합니다. 역할 링크 평가 시 *와 같은 패턴이 여러 이름과 일치하도록 사용할 때 유용합니다.
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');
AddNamedDomainMatchingFunc
역할 링크의 domain 필드에 대한 매칭 함수를 등록합니다(예: 세 개의 인수를 가진 g). 도메인 이름에서 와일드카드 사용을 가능하게 합니다.
예시:
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
기본 그룹 정책 유형(예: g)에 사용되는 역할 관리자를 반환합니다.
rm := e.GetRoleManager()
const rm = await e.getRoleManager();
rm = e.get_role_manager()
GetNamedRoleManager
특정 정책 유형(예: g2)에 대한 역할 관리자를 반환합니다.
rm := e.GetNamedRoleManager("g2")
const rm = await e.getNamedRoleManager("g2");
rm = e.get_named_role_manager("g2")
SetRoleManager
기본 그룹 정책 유형의 역할 관리자를 설정합니다.
e.SetRoleManager(rm)
e.setRoleManager(rm);
rm = e.set_role_manager(rm)
SetNamedRoleManager
특정 정책 유형(예: g2)에 대한 역할 관리자를 설정합니다.
rm := e.SetNamedRoleManager("g2", rm)
rm = e.set_role_manager("g2", rm)
Clear
역할 관리자 내의 모든 역할/링크 데이터를 지웁니다.
rm.Clear()
await rm.clear();
rm.clear()
AddLink
주어진 도메인에서 name1이 name2 역할을 갖도록 링크를 추가합니다(모델에 따라 도메인이 접두사로 사용될 수도 있음).
rm.AddLink("u1", "g1", "domain1")
await rm.addLink('u1', 'g1', 'domain1');
rm.add_link("u1", "g1", "domain1")
DeleteLink
주어진 도메인에서 name1과 name2 사이의 링크를 제거합니다.
rm.DeleteLink("u1", "g1", "domain1")
await rm.deleteLink('u1', 'g1', 'domain1');
rm.delete_link("u1", "g1", "domain1")
HasLink
주어진 도메인에서 name1이 name2 역할을 직접 또는 상속을 통해 보유하고 있는지 여부를 반환합니다.
rm.HasLink("u1", "g1", "domain1")
await rm.hasLink('u1', 'g1', 'domain1');
rm.has_link("u1", "g1", "domain1")
GetRoles
주어진 도메인에서 사용자가 보유한 모든 역할(상속된 역할 포함)을 반환합니다.
rm.GetRoles("u1", "domain1")
await rm.getRoles('u1', 'domain1');
rm.get_roles("u1", "domain")
GetUsers
주어진 역할을 보유한 모든 사용자를 반환합니다(해당되는 경우 기본 도메인 기준).
rm.GetUsers("g1")
await rm.getUsers('g1');
rm.get_users("g1")
PrintRoles
모든 역할을 역할 관리자의 로거에 출력합니다(디버깅용).
rm.PrintRoles()
await rm.printRoles();
rm.print_roles()
SetLogger
역할 관리자가 사용하는 로거를 설정합니다(예: PrintRoles 용도).
logger := log.DefaultLogger{}
logger.EnableLog(true)
rm.SetLogger(&logger)
_ = rm.PrintRoles()
GetDomains
사용자가 최소한 하나의 역할을 보유한 도메인들을 반환합니다. (Go 전용; 시그니처가 다를 수 있음.)
result, err := rm.GetDomains(name)
Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.