权限矩阵与数据范围 P30 · 权限与系统管理

权限不是"能不能进这个页面",而是三个维度叠加: 功能权限(能点什么)、数据权限(能看多少)、字段权限(能看到哪些字段)。 这一页把三者一次讲透。

这一页讲什么

权限三维度、数据范围的六种类型、可筛选的权限矩阵、字段级权限示例、权限测试与验收方法。

关键概念

功能权限、数据权限(行级)、字段权限(列级)、记录规则、共享规则、权限矩阵、最小权限原则。

常见坑

只在前端隐藏按钮或字段,接口层不过滤。前端隐藏等于没挡—— 打开浏览器控制台就能看到全部数据。所有权限校验必须在服务端做

1. 权限的三个维度

① 功能权限(能做什么)

菜单可见性、按钮可用性(新建/编辑/删除/审批/导出)。
粒度:模块 → 页面 → 按钮/动作。
例:采购员可"创建采购申请",但不能"审批"。

② 数据权限(能看多少)

同一张列表,不同人看到的行不同。
粒度:按组织/仓库/品类/客户/销售区域过滤。
例:华南仓仓管只看华南仓库存。

③ 字段权限(能看多少列)

同一条记录,不同人能看的字段不同。
粒度:字段级可见/可编辑。
例:仓管看采购单看不到单价与金额

三者共同决定最终结果:「能进采购订单页(功能)」+「只看本公司(数据)」+「看不到金额(字段)」。 设计时只谈其中一个维度,都会留下安全缺口。

2. 六种数据范围

范围类型含义典型角色
全部全集团数据供应链总监、财务总监、审计
本公司/法人仅限所属法人主体子公司总经理、子公司财务
本部门及下级按组织树向下包含部门经理
本仓库/工厂按库存组织过滤仓管主管、仓库操作员
本人仅自己创建或负责的数据采购员(看自己的单)、销售(看自己的客户)
自定义按条件组合(品类+区域+客户组)品类采购经理、大客户经理
多人规则同时命中时怎么办

常见两种策略:取并集(任一规则允许即可见,宽松)或取交集(全部规则都允许才可见,严格)。 必须在设计阶段明确,否则会出现"这个人为什么能看到这条数据"的无法解释的情况。 涉及敏感数据(价格、成本、客户信息)时建议取交集。

3. 权限矩阵:选中角色,看它在各模块的权限

点击角色按钮切换视图
读写(可创建/修改) 只读(仅查看) 受限(部分字段/部分数据) 无权限

4. 字段级权限示例:同一张采购订单

字段采购员仓储财务供应商(门户)
物料 / 数量 / 交期可见可改可见可见可见(可确认交期)
采购单价可见可改隐藏可见可见(仅自己报价)
金额 / 税率可见隐藏可见可核销可见(自己的发票)
供应商名称可见可见可见可见(仅自己)
其他供应商报价可见隐藏可见隐藏
内部审批意见可见隐藏可见隐藏
实现要点

① 隐藏字段必须在接口返回值里就过滤掉,而不是前端 CSS 隐藏; ② 隐藏字段的默认值不能影响业务逻辑(如金额隐藏后提交,服务端不能因此丢掉金额); ③ 导出功能要继承字段权限,否则"看不到但能导出",权限形同虚设。

5. 权限模块怎么验收

  1. 准备测试账号矩阵:每个角色一个账号,覆盖跨组织、跨仓库场景。
  2. 验证可见性:登录后检查菜单、列表行数、详情页字段是否符合预期。
  3. 验证越权:用 A 账号登录后,直接输入 B 账号数据的详情页 URL, 看是否被拦截——这是最容易被忽略的测试项。
  4. 验证接口:绕过页面直接调用接口(或用浏览器开发者工具看请求),确认服务端有校验。
  5. 验证导出与打印:导出文件里的字段是否与页面一致。
  6. 验证互斥与代理:互斥角色是否拦截、代理审批是否标记代签。
最小权限原则

默认不给任何权限,按需申请、按需授予。反过来做(默认全给再回收)几乎必然遗漏, 而且遗漏往往在审计时才被发现。

供应链管理系统演示原型 · 静态教学版 · 数据均为模拟演示数据