用户权限管理:2.0教程第5章谁能看什么
上一章完成了表单与详情页的搭建,工单系统已支持基本的数据录入与查阅。然而当前所有用户登录后共享同一视图:普通员工能看到管理面板,技术员可删除分类——权限缺失导致安全隐患。
本章为系统构建“访问控制层”:通过创建角色、配置菜单权限与数据范围,实现差异化的菜单可见性与数据操作权限。
5.1 理解角色(Role)
在 NocoBase 中,角色本质是权限策略的聚合容器。无需为每个用户单独分配权限,只需定义若干角色,再将用户归属到对应角色下即可。
NocoBase 安装后内置三个角色:
- Root:超级管理员,拥有全部系统权限,不可删除
- Admin:管理员,默认具备配置界面的操作权限
- Member:普通成员,默认权限范围最小
但内置角色无法满足工单系统的精细化管控需求,因此我们需要新建三个自定义角色。
5.2 创建三个角色
点击右上角设置菜单,进入 用户和权限 → 角色管理。
单击 添加角色,依次创建以下角色:
| 角色名称 | 角色标识 | 说明 |
|---|---|---|
| 管理员 | admin-helpdesk | 查看全部工单,管理分类,分配工单处理人 |
| 技术员 | technician | 仅查看分配给自己的工单,可处理并关闭 |
| 普通用户 | user | 仅能提交工单,且只能查看自己提交的记录 |
角色标识是系统内部使用的唯一编码,创建后不可修改,建议采用英文小写。角色名称可随时调整。
创建完成后,角色列表应显示我们新增的三个角色。
5.3 配置菜单权限
角色创建后,接下来定义每个角色可访问的菜单项。
点击目标角色进入权限配置页面,切换到 菜单访问权限 标签页。此处列出系统中所有菜单条目,勾选表示允许访问,取消勾选则隐藏该菜单。
管理员(admin-helpdesk):全部勾选
- 工单管理、分类管理、仪表盘——均可访问
技术员(technician):部分勾选
- ✅ 工单管理
- ✅ 仪表盘
- ❌ 分类管理(技术员无需维护分类)
普通用户(user):最小权限
- ✅ 工单管理(仅可查看本人的工单)
- ❌ 分类管理
- ❌ 仪表盘
实用技巧:NocoBase 提供“新增菜单项默认允许访问”开关。若希望每次添加新页面后自动对管理员开放,可开启此选项;对普通用户角色建议关闭,以保持权限最小化。
5.4 配置数据权限
菜单权限控制“页面入口”,数据权限则决定“进入页面后能看到哪些数据记录”。
核心概念:数据范围(Data Scope)。
在角色的权限配置中,切换到 数据表操作权限 标签页。找到“工单”数据表,点击进入独立配置。
普通用户:仅查看自己提交的工单
- 定位“工单”表的 查看 权限
- 数据范围选择 → 自己的数据
- 此时普通用户只能看到“创建人”为当前用户的工单(注意:默认筛选依据是系统创建人字段,而非提交人字段;如有特殊需求可后续调整)
同理,将“编辑”和“删除”权限也设为 自己的数据(也可直接禁用删除权限)。
关于全局配置:若仅配置工单表,可能导致其他数据表(如分类表、处理人相关表)不可见。当前系统较简单,可在全局中直接勾选 “查看所有数据”,仅对数据范围敏感的表单独设置权限。
技术员:仅查看分配给自己的工单
- 定位“工单”表的 查看 权限
- 数据范围选择 → 自己的数据
- 注意:NocoBase 的“自己的数据”默认按创建人过滤。若希望按“处理人”字段过滤,可在全局操作权限中进一步调整,或通过前端数据区块的筛选条件配合实现
一个实用的折中方案:在表格区块上设置默认筛选条件辅助权限控制,例如“处理人 = 当前用户”。但该配置全局生效,管理员也会受限。可配置“处理人 = 当前用户 或 提交人 = 当前用户”,使普通用户和技术员都能看到相关工单;管理员如需查看全部数据,可单独创建不带筛选的页面。
管理员:查看所有数据
管理员角色的数据范围选择 所有数据,所有操作权限均开启。简单直接。
5.5 工单分配操作
在权限配置完成前,我们先为工单列表添加一个实用功能:分配处理人。管理员可直接在列表中为工单指派技术员,无需进入编辑页面修改多个字段。
实现方式:在表格操作列添加一个自定义弹窗按钮。
- 进入 UI 编辑器模式,在工单列表表格的操作列中,点击 「+」 添加一个 「弹窗(Popup)」 操作按钮。
- 将按钮标题修改为 「分配」(通过按钮配置项修改标题)。
由于仅涉及简单的分配信息,使用对话框比抽屉更合适。在按钮右上角的弹窗设置中,选择 对话框 > 确认
- 点击「分配」按钮打开弹窗,在弹窗中 「创建区块 → 数据区块 → 表单(编辑)」,选择当前数据表。
- 在表单中仅勾选 「处理人」 一个字段,并在字段配置中设为 必填。
- 添加 「提交」 操作按钮。
配置完成后,管理员在工单列表中点击「分配」,弹出极简表单,选择处理人后提交即可。操作精准,避免误改其他字段。
用联动规则控制按钮显隐
「分配」按钮仅对管理员有用,普通用户和技术员看到此按钮会造成困扰。可通过联动规则根据当前用户角色动态控制按钮的显示/隐藏:
- 在 UI 编辑器模式下,点击「分配」按钮的配置项,找到 「联动规则」。
- 添加一条规则,条件设为:当前用户 / 角色 / 角色名称 不等于 管理员(即 admin-helpdesk 角色对应的名称)。
- 满足条件时的动作:隐藏 该按钮。
如此,仅管理员角色的用户能看到「分配」按钮,其他角色登录后按钮自动隐藏。
5.6 创建测试用户并体验
权限配置完成后,进行实际验证。
进入 用户管理(设置中心或之前搭建的用户管理页面),创建 3 个测试用户:
| 用户名 | 角色 |
|---|---|
| Alice | 管理员(admin-helpdesk) |
| Bob | 技术员(technician) |
| Charlie | 普通用户(user) |
创建完成后,分别用这三个账号登录系统,验证以下两点:
1. 菜单是否按预期显示?
- Alice → 看到所有菜单
- Bob → 仅看到工单管理和仪表盘
- Charlie → 仅看到“我的工单”
2. 数据是否按预期过滤?
- 先用 Alice 创建几条工单,分别分配给不同处理人
- 切换到 Bob 登录 → 仅看到分配给他的工单
- 切换到 Charlie 登录 → 仅看到自己提交的工单
同一套系统,不同用户看到完全不同的内容——这就是权限机制的价值。
小结
本章为工单系统建立了完整的权限体系:
- 3 个角色:管理员、技术员、普通用户
- 菜单权限:管控每个角色可访问的页面
- 数据权限:通过数据范围控制每个角色可见的记录
- 测试验证:使用不同账号登录确认权限生效
至此,工单系统已具备完整功能——支持录入、查看、角色化访问控制。但目前所有操作仍需手动执行。
下一章将学习 工作流(Workflow)——让系统自动完成业务流程。例如工单提交后自动通知处理人,状态变更时自动记录日志。
















