跳到主内容

权限配置

本页介绍 Edit Permission 表单中的字段,你在这里为 组织 定义权限策略。

打开表单​

  1. 登录 Casdoor。
  2. 在侧边栏进入 Permissions。
  3. 点击 Add 新建策略,或打开已有的策略编辑。

权限编辑页

字段​

基本信息​

Organization:拥有这个策略的 组织。一个组织可以有多个权限策略。从下拉框中选择。

Name:策略在组织内的唯一标识。必须唯一,调用 Casbin API 时会用到。

Display name:界面上显示的名称。

模型与存储​

Model:决定这个策略如何判定的模型(ACL、RBAC、ABAC 等)。在 Models 页面创建和编辑模型。示例:

提示

在 Casbin 在线编辑器 中设计和测试模型,再添加到 Casdoor。

适配器

这个字段指定存储权限策略规则的数据库表名。

Casdoor 用自己的数据库存储权限策略:

  • 这个字段为空时,权限策略存储在 permission_rule 表中
  • 指定了表名时,存储在指定的数据库表中
  • 如果数据库中不存在指定的表,会自动创建
注意事项

重要

每个模型应使用单独的适配器(表名)。结构不同的模型不应共用同一张表,否则加载策略时可能冲突。

更多关于适配器的内容见 适配器文档。

适配器与模型的关系​

在 Casdoor 中,适配器不是按权限配置的。

适配器和授权行为(例如是否支持 RBAC 或 ABAC)是在模型层级定义的。权限只是引用一个选定的模型,并提供策略数据(主体、资源、操作、效果)。

如果权限页上与 RBAC 相关的字段(例如 Sub-users 或 Sub-roles)是禁用的, 说明所选模型没有定义 role_definition,或者不支持 RBAC。

要让权限使用某个适配器:

  1. 创建或编辑一个模型,配置合适的 Casbin 定义和适配器。
  2. 保存模型。
  3. 创建或编辑权限时选择这个模型。

这是预期行为,是有意这样设计的。

主体配置​

这些字段定义权限策略适用于谁。

订阅用户​

权限适用于哪些 用户;在 Edit Permission 页面选择。

示例:

  • 选择具体用户,例如 alice、bob
  • 留空表示不按用户限制

包含角色​

使用 RBAC 时,在 Edit Role 页面选择这个权限适用于哪些 角色。

这会为该角色中的每个用户添加 g, user, role 这样的权限策略。

示例:

  • 选择角色,例如 admin、editor、viewer
  • 拥有这些角色的所有用户都会继承这些权限
提示

基于角色的权限

用角色来管理大规模权限非常有效。不必把权限分配给单个用户,而是分配给角色,再把角色分配给用户。

包含群组​

权限适用于哪些群组;在 Edit Permission 页面选择。所选群组的每个成员都会继承这个权限。用 * 匹配组织中的所有群组。

示例:

  • 选择群组,例如 dev-team、qa-team
  • 留空表示不按群组限制
备注

子用户、角色和群组是叠加的

子用户、子角色和子群组之间是“或”的关系:只要用户被直接列出,或者属于任一所选角色,或者是任一所选群组的成员,就获得该权限。角色本身也可以包含群组,所以群组也能通过角色间接授予权限。

包含域​

权限策略作用于哪些域。适用于多租户场景。

示例:

  • domain1, domain2
  • 不使用基于域的访问控制时留空

对象和操作配置​

这些字段定义策略控制哪些资源和哪些操作。

资源类型​

Casdoor 在外部应用认证时不使用这个字段;可以忽略,也可以用于自己的分类。

资源​

这个字段描述要实施权限控制的资源。

:::注意

这里的资源不是 Casdoor 界面中 Resources 页面上的资源。这里可以填任意字符串,例如:

  • URL:/api/users、/admin/dashboard
  • 文件名:document.pdf、config.yaml
  • 资源标识:project:123、database:users

:::

可以添加多个资源;Casdoor 会为每个“资源 - 操作”组合创建权限规则。

动作​

这个字段描述对资源执行的操作。和资源一样,可以是任意字符串,例如:

  • HTTP 方法:GET、POST、PUT、DELETE
  • 增删改查操作:read、write、update、delete
  • 自定义操作:view、edit、approve、publish
注意事项

Casdoor 存储前会把这些字符串全部转成小写。另外,Casdoor 会把所有操作应用到每个资源上。在这个配置页上不能指定某个操作只对某些资源生效。

如果需要细粒度控制“操作 - 资源”组合,应在模型文件中定义。

效果配置​

效果​

这个选项对 Casdoor 自身控制应用访问时生效。

信息

如果你想让外部应用通过 Casdoor 提供的接口实施权限控制,这个字段不起作用。应在模型文件中用 allow 或 deny 规则描述匹配的效果。

配置示例​

本页针对 (sub, obj, act) 模型编写,这是最常见的权限模型之一。

下面是一个配置示例:

  • Model:rbac_model(基于角色的访问控制)
  • Sub roles:admin、editor
  • Resources:/api/users、/api/posts
  • Actions:read、write

这样,拥有 admin 或 editor 角色的用户可以对 /api/users 和 /api/posts 资源执行 read 和 write 操作。

相关主题​