본문으로 건너뛰기

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

AddNamedDomainMatchingFunc​

역할 링크의 domain 필드에 대한 매칭 함수를 등록합니다(예: 세 개의 인수를 가진 g). 도메인 이름에서 와일드카드 사용을 가능하게 합니다.

예시:

e, _ := casbin.NewEnforcer("path/to/model", "path/to/policy")
e.AddNamedDomainMatchingFunc("g", "", util.MatchKey)

GetRoleManager​

기본 그룹 정책 유형(예: g)에 사용되는 역할 관리자를 반환합니다.

rm := e.GetRoleManager()

GetNamedRoleManager​

특정 정책 유형(예: g2)에 대한 역할 관리자를 반환합니다.

rm := e.GetNamedRoleManager("g2")

SetRoleManager​

기본 그룹 정책 유형의 역할 관리자를 설정합니다.

e.SetRoleManager(rm)

SetNamedRoleManager​

특정 정책 유형(예: g2)에 대한 역할 관리자를 설정합니다.

rm := e.SetNamedRoleManager("g2", rm)

Clear​

역할 관리자 내의 모든 역할/링크 데이터를 지웁니다.

rm.Clear()

주어진 도메인에서 name1이 name2 역할을 갖도록 링크를 추가합니다(모델에 따라 도메인이 접두사로 사용될 수도 있음).

rm.AddLink("u1", "g1", "domain1")

주어진 도메인에서 name1과 name2 사이의 링크를 제거합니다.

rm.DeleteLink("u1", "g1", "domain1")

주어진 도메인에서 name1이 name2 역할을 직접 또는 상속을 통해 보유하고 있는지 여부를 반환합니다.

rm.HasLink("u1", "g1", "domain1")

GetRoles​

주어진 도메인에서 사용자가 보유한 모든 역할(상속된 역할 포함)을 반환합니다.

rm.GetRoles("u1", "domain1")

GetUsers​

주어진 역할을 보유한 모든 사용자를 반환합니다(해당되는 경우 기본 도메인 기준).

rm.GetUsers("g1")

PrintRoles​

모든 역할을 역할 관리자의 로거에 출력합니다(디버깅용).

rm.PrintRoles()

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.