跳转到内容

功能权限

功能权限插件把权限控制从“能不能访问一张表”细化到“能不能点击页面上的某一个按钮”。管理员可以按角色控制菜单、页面区块和具体功能,适合把审批、删除、批量处理、脚本动作等高风险操作交给不同岗位。

  • 按钮级授权:同一个页面可以只开放“查看”,隐藏“删除”“提交”或自定义动作。
  • 按页面结构管理:权限树沿着“菜单 → 区块 → 按钮”展示,定位授权对象更直观。
  • 前后端双重校验:未授权按钮在界面上隐藏;自定义请求在服务端再次校验,不能只靠前端隐藏。
  • 兼容现有 ACL:插件只增加功能按钮限制,数据表、字段和菜单的 NocoBase 原生 ACL 仍然生效。
  • 按角色复用:一次配置角色,角色下的用户自动继承;多个角色是否合并,由系统中的角色模式决定。
  • 低维护成本:插件从已创建的页面和按钮中生成目录,不需要管理员手工记录按钮 UID。

图 1:功能权限菜单的设置页面。这里以Admin权限为例。功能权限菜单中的设置入口

图 2:功能权限菜单的实际业务页面。权限配置完成后,用户看到的按钮集合会随角色变化。

功能权限菜单中的业务操作入口

角色权限页上方的角色模式决定“当前角色”如何传给权限插件:

角色模式权限计算方式A 勾选“删除”、B 勾选“提交”时
独立角色只计算当前切换到的角色切换到 A 只能删除,切换到 B 只能提交
允许角色并集可以选择角色并集,也可以单独切换角色选择 A 只能删除;选择角色并集时删除和提交都可用
仅角色并集强制计算用户所有角色的并集,不能单独切换删除和提交都可用

这里的“并集”是允许访问的并集:多个角色中任一角色勾选了按钮,联合角色就可以使用该按钮。它不是“交集”,不会要求所有角色都同时勾选。

如果角色并集中存在尚未保存过功能权限的角色,插件会沿用兼容策略,暂时放行插件管理的功能按钮。要严格执行白名单,请先为参与并集的每个角色至少保存一次功能权限。

  • 总开关关闭时,功能权限判断暂停生效;NocoBase 原生数据 ACL 不受影响,例如数据表的查看、新增、编辑、删除权限。
  • root 角色不受本插件按钮限制影响。
  • 未配置过功能权限的角色在首次保存前沿用兼容策略,默认拥有所有功能按钮权限;保存后按白名单执行。
  1. 进入 用户和权限 → 角色和权限
  2. 选择需要配置的角色。
  3. 根据业务需要,在角色列表上方选择 独立角色、允许角色并集仅角色并集
  4. 打开 权限 → 功能权限
  5. 确认 启用功能权限 已打开。
  1. 在权限树中找到本插件创建的 功能权限 菜单。
  2. 展开菜单下的 审批记录 区块。
  3. 勾选该角色需要使用的按钮;取消勾选不应开放的按钮。
  4. 菜单或区块前的复选框可以批量控制其后代按钮,按钮行用于精确授权。

功能权限菜单的按钮级授权树

图 2:本插件创建的“功能权限”菜单及其按钮级授权树。

  1. 点击 保存
  2. 使用属于该角色的用户重新进入功能权限菜单并刷新页面。
  3. 观察按钮是否按预期显示或隐藏。
  4. 对“自定义请求”类按钮同时验证实际提交:没有权限时,服务端返回无权执行提示。

首次保存某个角色后,该角色会进入功能权限白名单模式。建议先勾选该角色完整需要的按钮,再保存。

场景配置方式用户体验
一线人员只处理审批保留“查看”和“提交”,关闭“删除”页面保留工作入口,但不会出现删除按钮
项目人员可以录入,不能改配置开放业务录入按钮,关闭配置、脚本和批量动作页面更聚焦,误操作风险更低
外部协作角色只看结果只勾选查看类功能用户可以查看进度,但不能提交或删除
高风险动作分岗将删除、自定义请求、JS action 只授予管理员角色敏感动作集中在少数岗位