功能权限
为什么使用功能权限?
Section titled “为什么使用功能权限?”功能权限插件把权限控制从“能不能访问一张表”细化到“能不能点击页面上的某一个按钮”。管理员可以按角色控制菜单、页面区块和具体功能,适合把审批、删除、批量处理、脚本动作等高风险操作交给不同岗位。
- 按钮级授权:同一个页面可以只开放“查看”,隐藏“删除”“提交”或自定义动作。
- 按页面结构管理:权限树沿着“菜单 → 区块 → 按钮”展示,定位授权对象更直观。
- 前后端双重校验:未授权按钮在界面上隐藏;自定义请求在服务端再次校验,不能只靠前端隐藏。
- 兼容现有 ACL:插件只增加功能按钮限制,数据表、字段和菜单的 NocoBase 原生 ACL 仍然生效。
- 按角色复用:一次配置角色,角色下的用户自动继承;多个角色是否合并,由系统中的角色模式决定。
- 低维护成本:插件从已创建的页面和按钮中生成目录,不需要管理员手工记录按钮 UID。
图 1:功能权限菜单的设置页面。这里以Admin权限为例。
图 2:功能权限菜单的实际业务页面。权限配置完成后,用户看到的按钮集合会随角色变化。

角色模式与权限合并
Section titled “角色模式与权限合并”角色权限页上方的角色模式决定“当前角色”如何传给权限插件:
| 角色模式 | 权限计算方式 | A 勾选“删除”、B 勾选“提交”时 |
|---|---|---|
| 独立角色 | 只计算当前切换到的角色 | 切换到 A 只能删除,切换到 B 只能提交 |
| 允许角色并集 | 可以选择角色并集,也可以单独切换角色 | 选择 A 只能删除;选择角色并集时删除和提交都可用 |
| 仅角色并集 | 强制计算用户所有角色的并集,不能单独切换 | 删除和提交都可用 |
这里的“并集”是允许访问的并集:多个角色中任一角色勾选了按钮,联合角色就可以使用该按钮。它不是“交集”,不会要求所有角色都同时勾选。
如果角色并集中存在尚未保存过功能权限的角色,插件会沿用兼容策略,暂时放行插件管理的功能按钮。要严格执行白名单,请先为参与并集的每个角色至少保存一次功能权限。
- 总开关关闭时,功能权限判断暂停生效;NocoBase 原生数据 ACL 不受影响,例如数据表的查看、新增、编辑、删除权限。
root角色不受本插件按钮限制影响。- 未配置过功能权限的角色在首次保存前沿用兼容策略,默认拥有所有功能按钮权限;保存后按白名单执行。
1. 打开功能权限页
Section titled “1. 打开功能权限页”- 进入 用户和权限 → 角色和权限。
- 选择需要配置的角色。
- 根据业务需要,在角色列表上方选择 独立角色、允许角色并集 或 仅角色并集。
- 打开 权限 → 功能权限。
- 确认 启用功能权限 已打开。
2. 选择菜单、区块和按钮
Section titled “2. 选择菜单、区块和按钮”- 在权限树中找到本插件创建的 功能权限 菜单。
- 展开菜单下的 审批记录 区块。
- 勾选该角色需要使用的按钮;取消勾选不应开放的按钮。
- 菜单或区块前的复选框可以批量控制其后代按钮,按钮行用于精确授权。

图 2:本插件创建的“功能权限”菜单及其按钮级授权树。
3. 保存并验证
Section titled “3. 保存并验证”- 点击 保存。
- 使用属于该角色的用户重新进入功能权限菜单并刷新页面。
- 观察按钮是否按预期显示或隐藏。
- 对“自定义请求”类按钮同时验证实际提交:没有权限时,服务端返回无权执行提示。
首次保存某个角色后,该角色会进入功能权限白名单模式。建议先勾选该角色完整需要的按钮,再保存。
| 场景 | 配置方式 | 用户体验 |
|---|---|---|
| 一线人员只处理审批 | 保留“查看”和“提交”,关闭“删除” | 页面保留工作入口,但不会出现删除按钮 |
| 项目人员可以录入,不能改配置 | 开放业务录入按钮,关闭配置、脚本和批量动作 | 页面更聚焦,误操作风险更低 |
| 外部协作角色只看结果 | 只勾选查看类功能 | 用户可以查看进度,但不能提交或删除 |
| 高风险动作分岗 | 将删除、自定义请求、JS action 只授予管理员角色 | 敏感动作集中在少数岗位 |