Skip to content

权限管理

概念介绍

本系统的权限管理分为两大层,即全局范围的权限控制和各模块的权限控制。其中全局范围的权限控制又分为功能权限和数据权限。

以上三个权限控制机制具有先后顺序,即先进行功能权限控制,再进行数据权限控制,然后各个模块进行各自的权限控制。这种机制有点像多层的洋葱,用户的访问请求,必需穿过每一层的权限控制,才能最终到达目标资源。

权限控制机制

其中,全局范围内的 功能权限数据权限 ,是一直生效的,且可以由超级管理员进行配置。 而各模块的权限控制, 由系统开发人员根据各个模块的需求进行单独开发(当然也可以没有)。

全局范围的权限控制

全局范围的权限控制是指系统全局生效的权限控制,又分为功能权限、数据权限。

1. 功能权限

全局范围内的功能权限系统采用 RBAC 权限模型,即 Role-Based Access Control (基于角色的访问控制)。

简单来说,每个用户拥有若干角色,每个角色拥有若干个菜单,菜单中存在菜单权限、按钮权限。这样,就形成了 “用户<->角色<->菜单” 的授权模型。 在这种模型中,用户与角色、角色与菜单之间构成了多对多的关系。

因此在系统中,我们通常也称之为 ”菜单权限“ (虽然菜单权限功能即包括了菜单权限和按钮权限的管理,但是我们还是统称为菜单权限)。

例如,我们可以给公司内负责公司库存管理的员工 小 A 设置 “库存管理员” 角色,该角色下有 “库存查询”、“出入库” 等菜单权限。

功能权限模型

那么,该如何管理功能权限(菜单权限)呢? 我们可以查询本文档的 菜单权限管理 部分。

2. 数据权限

全局范围内的数据权限,主要用于实现指定用户可以操作指定范围的数据。

举个例子:

例如说,例如系统中存储了员工的工资信息,那么针对员工工资的数据权限我们可以设置为:

用户数据范围
普通员工自己
部门领导所属部门及子部门的所有员工
HR 小姐姐整个公司的所有员工

目前,在系统中,我们预先设置了多个数据权限范围:

  • 全部数据权限:用户可以操作所有数据。
  • 指定部门数据权限:用户可以操作指定部门的数据。
  • 本部门数据权限:用户可以操作本部门的数据。
  • 本部门及以下数据权限:用户可以操作本部门及以下部门的数据。
  • 仅本人数据权限:用户只能操作自己的数据。

但是对于本系统的实际来说,大多数员工都是身兼数职,绝大数资源都是需要支持跨部门进行查询和操作的,因此在数据权限控制上,我们将其设置为“全部数据权限”。

举几个例子:

  1. 在 "基因检测大组" 这个部门中的韩工负责签收样本,但是这个样本也需要能被 ”印迹大组“ 这个部门中的员工进行查询。
  2. 研发项目中,可能有来自不同部门的员工,他们需要在研发项目中进行合作,因此不同部门员工创建的项目和数据,也要允许其他部门的员工进行查询和操作。
  3. 在出入库管理中,可能有来自不同部门的员工,他们需要在出入库管理中进行合作,因此不同部门员工创建的出入库单和数据,也要允许其他部门的员工进行查询和操作。

本系统数据权限范围设置

系统中先设置一个 ”基础角色“,并将其数据权限范围设置为“全部数据权限”。

注意:修改为其他数据权限范围, 会对当前系统的权限控制体系产生影响。

这么设置会造成数据泄漏吗?

参考本文最上面的 洋葱 模型,用户在访问资源时,需要先通过全局范围的权限控制,再通过各模块的权限控制。如果系统能妥善设置全局范围内的功能权限和各个模块的权限控制,那么就不会造成数据泄漏。

各模块的权限控制

特定模块的权限控制是指仅仅在特定功能模块中生效的权限控制,例如我们可以在研发项目中设置不同的角色,不同角色在本项目中具有不同的权限。

在智研系统中,项目库、方法库、知识库 和 库存管理-个人库存管理 这几个模块,系统开发了独立的模块权限控制机制,每个模块都有自己的权限控制,用户在访问这些模块时,需要先通过全局范围的权限控制,再通过各模块的权限控制。

各个模块的权限控制机制,我们将在各个模块的说明文档中进行详细说明。

初级管理员先理解三层关系

可以先把权限关系理解成下面三层:

  1. 菜单和按钮层:决定用户能否看到入口和操作按钮。
  2. 数据范围层:决定用户能看到哪些记录。
  3. 模块内权限层:决定用户在某个具体模块里是否还有额外限制。

权限配置主流程图

创建角色前建议先做什么

在实际管理中,建议先梳理岗位,而不是先想到什么就建什么角色。一个较稳定的思路通常是:

  1. 先定义岗位,例如样本签收员、检测员、库存管理员、报告审核员、签发员。
  2. 再为每类岗位建立角色。
  3. 最后根据实际需要补充特殊角色。

这样能避免后续出现大量权限重复、名称混乱的角色。

创建角色

管理员需要在 组织架构 - 角色管理 页面点击 新增 按钮,创建角色。

创建角色时通常要关注:

  1. 角色名称。
  2. 角色编码。
  3. 排序。
  4. 状态是否启用。
  5. 数据范围。

权限管理

菜单权限管理

管理员需要在 组织架构 - 角色管理 页面点击 权限 按钮,选择“菜单”权限,即可对角色的权限进行勾选。

菜单权限怎么理解

菜单权限不仅仅是左侧菜单显示与否,也可能包含按钮级权限。也就是说:

  1. 用户可能能看到一个页面。
  2. 但在页面里不一定能看到新增、删除、审核、签发等按钮。

平台权限要特别注意

系统中的菜单还可能属于不同平台,例如:

  1. 实验室系统。
  2. 智研系统。
  3. 生产管理系统。

如果角色没有对应平台菜单,用户即使登录成功,也可能在切换平台后看不到任何可用入口。

数据权限配置

虽然当前系统为了业务协作方便,通常会采用较宽的数据权限范围,但管理员仍然需要理解数据权限的影响边界。

如果误把基础角色的数据权限改得过窄,常见后果包括:

  1. 跨部门协作数据突然不可见。
  2. 项目、库存、样本等协同数据被错误隔离。
  3. 用户以为系统故障,实际上是权限范围缩窄了。

给用户赋予角色

管理员需要在 组织架构 - 用户管理 页面点击 更多 按钮,选择“赋予角色”,即可对用户的角色进行勾选。一个用户支持多个角色。

多角色用户怎么理解

一个用户可以同时承担多个岗位,因此被赋予多个角色是很常见的。

例如:

  1. 同一人既是检测人员,也是库存管理员。
  2. 同一人既参与样本签收,也承担报告审核。

这时应根据业务实际组合角色,而不是强行创建一个覆盖所有权限的超级角色。

流水线权限

流水线权限比较特殊,因为流水线是管理员动态创建的。因此需要管理员在创建流水线的同时,在系统管理 - 菜单管理 中的 样本检测 - 检测任务 下创建对应的流水线权限。

该权限的权限标识与流水线上的权限标识需要保持一致。

流水线权限

这意味着,流水线权限与普通静态菜单不同,它通常会随着流水线的新增而动态补充。

流水线权限是高频漏配点

如果新增了流水线,但没有同步配置对应权限,检测人员很可能会出现“明明分配了岗位,却看不到对应检测任务”的情况。

权限管理小技巧

  1. 可以设置一个基础角色,赋予基础的权限。那么其他角色可以基于基础角色外进行权限勾选,简化权限配置。最终用户赋予该基础权限 + 其他角色。
  2. 对于经常协同的岗位,优先复用已有角色组合,而不是不断新建只差一两个按钮的角色。
  3. 角色调整后,建议让用户重新登录再验证,避免把缓存问题误判为权限没生效。

常见问题

用户能登录,但左侧没有菜单,为什么

通常先检查:

  1. 是否分配了任何角色。
  2. 该角色是否配置了菜单权限。
  3. 该角色菜单是否属于当前平台。

用户能看到页面,但没有按钮,为什么

这通常说明页面菜单权限有了,但按钮权限或模块内权限还没有配完整。

为什么同岗位两个人看到的页面不同

优先检查他们是否真的被赋予了相同角色,以及是否还叠加了其他角色。

建议继续阅读

  1. 个人中心
  2. 流水线管理
  3. 实验室系统 FAQ