跳转至主要内容

RoleManager API

RoleManager

RoleManager提供了一个定义管理角色操作的接口。 向RoleManager添加匹配函数后,可以在角色名称和域中使用通配符。

AddNamedMatchingFunc()

AddNamedMatchingFunc函数将MatchingFunc按Ptype添加到RoleManager。 执行角色匹配时将使用MatchingFunc

    e.AddNamedMatchingFunc("g", "", util.KeyMatch)
_, _ = e.AddGroupingPolicies([][]string{{"*", "admin", "domain1"}})
_, _ = e.GetRoleManager().HasLink("bob", "admin", "domain1") // -> true, nil

例如:

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

AddNamedDomainMatchingFunc()

AddNamedDomainMatchingFunc函数将MatchingFunc按Ptype添加到RoleManager。 DomainMatchingFunc与上述的MatchingFunc类似。

例如:

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

GetRoleManager()

GetRoleManager函数获取g的当前角色管理器。

例如:

    rm := e.GetRoleManager()

GetNamedRoleManager()

GetNamedRoleManager函数通过命名的Ptype获取角色管理器。

例如:

    rm := e.GetNamedRoleManager("g2")

SetRoleManager()

SetRoleManager函数为g设置当前的角色管理器。

例如:

    e.SetRoleManager(rm)

SetNamedRoleManager()

SetNamedRoleManager函数通过命名的Ptype设置角色管理器。

例如:

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

Clear()

Clear函数清除所有存储的数据,并将角色管理器重置为其初始状态。

例如:

    rm.Clear()

AddLink添加了两个角色之间的继承链接。 角色:name1和角色:name2。 域是角色的前缀(可以用于其他目的)。

例如:

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

DeleteLink删除了两个角色之间的继承链接。 角色:name1和角色:name2。 域是角色的前缀(可以用于其他目的)。

例如:

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

HasLink确定两个角色之间是否存在链接。 角色:name1继承角色:name2。 域是角色的前缀(可以用于其他目的)。

例如:

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

GetRoles()

GetRoles获取用户继承的角色。 域是角色的前缀(可以用于其他目的)。

例如:

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

GetUsers()

GetUsers获取继承角色的用户。 域是用户的前缀(可以用于其他目的)。

例如:

    rm.GetUsers("g1")

PrintRoles()

PrintRoles将所有角色打印到日志。

例如:

    rm.PrintRoles()

SetLogger()

SetLogger设置角色管理器的记录器。

例如:

    logger := log.DefaultLogger{}
logger.EnableLog(true)
rm.SetLogger(&logger)
_ = rm.PrintRoles()

GetDomains()

GetDomains获取用户拥有的域

例如:

    result, err := rm.GetDomains(name)