权限管理
概念介绍
本系统的权限管理分为两大层,即全局范围的权限控制和各模块的权限控制。其中全局范围的权限控制又分为功能权限和数据权限。
以上三个权限控制机制具有先后顺序,即先进行功能权限控制,再进行数据权限控制,然后各个模块进行各自的权限控制。这种机制有点像多层的洋葱,用户的访问请求,必需穿过每一层的权限控制,才能最终到达目标资源。
其中,全局范围内的 功能权限 和 数据权限 ,是一直生效的,且可以由超级管理员进行配置。 而各模块的权限控制, 由系统开发人员根据各个模块的需求进行单独开发(当然也可以没有)。
全局范围的权限控制
全局范围的权限控制是指系统全局生效的权限控制,又分为功能权限、数据权限。
1. 功能权限
全局范围内的功能权限系统采用 RBAC 权限模型,即 Role-Based Access Control (基于角色的访问控制)。
简单来说,每个用户拥有若干角色,每个角色拥有若干个菜单,菜单中存在菜单权限、按钮权限。这样,就形成了 “用户<->角色<->菜单” 的授权模型。 在这种模型中,用户与角色、角色与菜单之间构成了多对多的关系。
因此在系统中,我们通常也称之为 ”菜单权限“ (虽然菜单权限功能即包括了菜单权限和按钮权限的管理,但是我们还是统称为菜单权限)。
例如,我们可以给公司内负责公司库存管理的员工 小 A 设置 “库存管理员” 角色,该角色下有 “库存查询”、“出入库” 等菜单权限。

那么,该如何管理功能权限(菜单权限)呢? 我们可以查询本文档的 菜单权限管理 部分。
2. 数据权限
全局范围内的数据权限,主要用于实现指定用户可以操作指定范围的数据。
举个例子:
例如说,例如系统中存储了员工的工资信息,那么针对员工工资的数据权限我们可以设置为:
| 用户 | 数据范围 |
|---|---|
| 普通员工 | 自己 |
| 部门领导 | 所属部门及子部门的所有员工 |
| HR 小姐姐 | 整个公司的所有员工 |
目前,在系统中,我们预先设置了多个数据权限范围:
- 全部数据权限:用户可以操作所有数据。
- 指定部门数据权限:用户可以操作指定部门的数据。
- 本部门数据权限:用户可以操作本部门的数据。
- 本部门及以下数据权限:用户可以操作本部门及以下部门的数据。
- 仅本人数据权限:用户只能操作自己的数据。
但是对于本系统的实际来说,大多数员工都是身兼数职,绝大数资源都是需要支持跨部门进行查询和操作的,因此在数据权限控制上,我们将其设置为“全部数据权限”。
举几个例子:
- 在 "基因检测大组" 这个部门中的韩工负责签收样本,但是这个样本也需要能被 ”印迹大组“ 这个部门中的员工进行查询。
- 研发项目中,可能有来自不同部门的员工,他们需要在研发项目中进行合作,因此不同部门员工创建的项目和数据,也要允许其他部门的员工进行查询和操作。
- 在出入库管理中,可能有来自不同部门的员工,他们需要在出入库管理中进行合作,因此不同部门员工创建的出入库单和数据,也要允许其他部门的员工进行查询和操作。
本系统数据权限范围设置
系统中先设置一个 ”基础角色“,并将其数据权限范围设置为“全部数据权限”。
注意:修改为其他数据权限范围, 会对当前系统的权限控制体系产生影响。
这么设置会造成数据泄漏吗?
参考本文最上面的 洋葱 模型,用户在访问资源时,需要先通过全局范围的权限控制,再通过各模块的权限控制。如果系统能妥善设置全局范围内的功能权限和各个模块的权限控制,那么就不会造成数据泄漏。
各模块的权限控制
特定模块的权限控制是指仅仅在特定功能模块中生效的权限控制,例如我们可以在研发项目中设置不同的角色,不同角色在本项目中具有不同的权限。
在智研系统中,项目库、方法库、知识库 和 库存管理-个人库存管理 这几个模块,系统开发了独立的模块权限控制机制,每个模块都有自己的权限控制,用户在访问这些模块时,需要先通过全局范围的权限控制,再通过各模块的权限控制。
各个模块的权限控制机制,我们将在各个模块的说明文档中进行详细说明。
初级管理员先理解三层关系
可以先把权限关系理解成下面三层:
- 菜单和按钮层:决定用户能否看到入口和操作按钮。
- 数据范围层:决定用户能看到哪些记录。
- 模块内权限层:决定用户在某个具体模块里是否还有额外限制。
权限配置主流程图
创建角色前建议先做什么
在实际管理中,建议先梳理岗位,而不是先想到什么就建什么角色。一个较稳定的思路通常是:
- 先定义岗位,例如样本签收员、检测员、库存管理员、报告审核员、签发员。
- 再为每类岗位建立角色。
- 最后根据实际需要补充特殊角色。
这样能避免后续出现大量权限重复、名称混乱的角色。
创建角色
管理员需要在 组织架构 - 角色管理 页面点击 新增 按钮,创建角色。
创建角色时通常要关注:
- 角色名称。
- 角色编码。
- 排序。
- 状态是否启用。
- 数据范围。
权限管理
菜单权限管理
管理员需要在 组织架构 - 角色管理 页面点击 权限 按钮,选择“菜单”权限,即可对角色的权限进行勾选。
菜单权限怎么理解
菜单权限不仅仅是左侧菜单显示与否,也可能包含按钮级权限。也就是说:
- 用户可能能看到一个页面。
- 但在页面里不一定能看到新增、删除、审核、签发等按钮。
平台权限要特别注意
系统中的菜单还可能属于不同平台,例如:
- 实验室系统。
- 智研系统。
- 生产管理系统。
如果角色没有对应平台菜单,用户即使登录成功,也可能在切换平台后看不到任何可用入口。
数据权限配置
虽然当前系统为了业务协作方便,通常会采用较宽的数据权限范围,但管理员仍然需要理解数据权限的影响边界。
如果误把基础角色的数据权限改得过窄,常见后果包括:
- 跨部门协作数据突然不可见。
- 项目、库存、样本等协同数据被错误隔离。
- 用户以为系统故障,实际上是权限范围缩窄了。
给用户赋予角色
管理员需要在 组织架构 - 用户管理 页面点击 更多 按钮,选择“赋予角色”,即可对用户的角色进行勾选。一个用户支持多个角色。
多角色用户怎么理解
一个用户可以同时承担多个岗位,因此被赋予多个角色是很常见的。
例如:
- 同一人既是检测人员,也是库存管理员。
- 同一人既参与样本签收,也承担报告审核。
这时应根据业务实际组合角色,而不是强行创建一个覆盖所有权限的超级角色。
流水线权限
流水线权限比较特殊,因为流水线是管理员动态创建的。因此需要管理员在创建流水线的同时,在系统管理 - 菜单管理 中的 样本检测 - 检测任务 下创建对应的流水线权限。
该权限的权限标识与流水线上的权限标识需要保持一致。

这意味着,流水线权限与普通静态菜单不同,它通常会随着流水线的新增而动态补充。
流水线权限是高频漏配点
如果新增了流水线,但没有同步配置对应权限,检测人员很可能会出现“明明分配了岗位,却看不到对应检测任务”的情况。
权限管理小技巧
- 可以设置一个基础角色,赋予基础的权限。那么其他角色可以基于基础角色外进行权限勾选,简化权限配置。最终用户赋予该基础权限 + 其他角色。
- 对于经常协同的岗位,优先复用已有角色组合,而不是不断新建只差一两个按钮的角色。
- 角色调整后,建议让用户重新登录再验证,避免把缓存问题误判为权限没生效。
常见问题
用户能登录,但左侧没有菜单,为什么
通常先检查:
- 是否分配了任何角色。
- 该角色是否配置了菜单权限。
- 该角色菜单是否属于当前平台。
用户能看到页面,但没有按钮,为什么
这通常说明页面菜单权限有了,但按钮权限或模块内权限还没有配完整。
为什么同岗位两个人看到的页面不同
优先检查他们是否真的被赋予了相同角色,以及是否还叠加了其他角色。
