Casbin

Casbin

  • 文档
  • API
  • 编辑器
  • IDE 插件
  • Single Sign-On (SSO)
  • 论坛
  • 帮助
  • 博客
  • Pricing
  • Contact Sales
  • Languages icon中文
    • English
    • 한국어
    • Русский
    • Français
    • Deutsch
    • 日本語
    • 参与翻译
  • GitHub

›API

基础知识

  • 概述
  • 开始使用
  • 工作原理
  • 教程

Model

  • 支持的Models
  • Model语法
  • 效果器
  • 函数
  • 基于角色的访问控制
  • RBAC with Pattern
  • 域内RBAC
  • Casbin RBAC v.s. RBAC96
  • ABAC
  • 优先级模型
  • 超级管理员

存储

  • Model存储
  • Policy存储
  • 政策子集加载

扩充功能

  • Enforcers
  • 适配器
  • 观察者
  • 调度器
  • 角色管理器
  • 中间件
  • Graphql 中间件
  • 云端原生中间值

API

  • API 概述
  • 管理 API
  • RBAC API
  • 域内基于角色的访问控制 API
  • RoleManager API
  • 数据权限

高级用法

  • 多线程
  • 基准测试
  • 性能优化
  • Kubernetes的授权
  • 通过特使核准服务网格。

管理

  • 管理员门户
  • Casbin 服务
  • 日志 & 错误处理
  • 前端使用

编辑器

  • 在线编辑器
  • IDE 插件

更多

  • 本项目使用者
  • 贡献中
  • 隐私政策
  • 服务条款
Translate

RoleManager API

角色管理器

RoleManager提供接口来定义管理角色的操作。 添加匹配函数到角色管理器允许在角色名称和域中使用通配符。

AddNamedMatchingFunc()

AddNamedMatchingFunc 通过 ptype 角色管理器添加MatchingFunc 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 通过 ptype 把MatchingFunc 添加到 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 的role manager。

例如:

Go
Node.js
Python
    rm := e.GetRoleManager()
    const rm = await e.getRoleManager();
    rm = e.get_role_manager()

Clear()

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

例如:

Go
Node.js
Python
    rm.Clear()
    await rm.clear();
    rm.clear()

AddLink()

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

例如:

Go
Node.js
Python
    rm.AddLink("u1", "g1", "domain1")
    await rm.addLink('u1', 'g1', 'domain1');
    rm.add_link("u1", "g1", "domain1")

DeleteLink()

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

例如:

Go
Node.js
Python
    rm.DeleteLink("u1", "g1", "domain1")
    await rm.deleteLink('u1', 'g1', 'domain1');
    rm.delete_link("u1", "g1", "domain1")

HasLink()

HasLink 决定两种角色之间是否存在联系。 role: name1 继承自 role: 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)
← 域内基于角色的访问控制 API数据权限 →
  • 角色管理器
    • AddNamedMatchingFunc()
    • AddNamedDomainMatchingFunc()
    • GetRoleManager()
    • Clear()
    • AddLink()
    • DeleteLink()
    • HasLink()
    • GetRoles()
    • GetUsers()
    • PrintRoles()
    • SetLogger()
    • GetDomains()
Casbin
Docs
Getting StartedManagement APIRBAC APIMiddlewares
Community
Who's using Casbin?Stack Overflow
Casbin          jCasbin
Node-Casbin   PHP-CasbinPyCasbin          Casbin.NETCasbin-CPP        Casbin-RS
Follow @casbinHQ
Copyright © 2022 Casbin Organization