第4章 用户旅程中的权限触点
权限触点是指在用户与系统交互的完整旅程中,每一个需要执行权限判断的关键节点。产品经理若不能准确识别这些触点,权限需求就会出现遗漏或描述过于笼统,导致开发阶段频繁返工、上线后出现越权漏洞。本章将沿着典型用户旅程,逐一拆解注册/登录、角色切换、功能使用、数据查看、审批流程五个核心触点的权限需求,并以RICE框架评估各需求的实现优先级。
4.1 触点一:注册/登录
用户场景:新用户通过邮箱或手机号注册账号,老用户输入凭证登录系统,或通过第三方OAuth认证进入。
业务问题:未经身份验证的用户可能访问受限资源;会话劫持导致数据泄露;多端登录缺乏管控。
需求拆解:
- 身份核验:校验账号/密码、短信验证码或生物特征
- 会话管理:生成token、设置过期时间、支持主动注销
- 设备绑定:限制同一账号同时在线的设备数量
- 登录失败策略:连续失败n次后锁定账号并触发告警
方案表达:在PRD中使用「身份认证权限规则表」描述各身份类型可访问的初始页面和接口范围。
| 身份类型 | 初始页面 | 允许的接口范围 | 会话有效期 |
|---|---|---|---|
| 未登录用户 | 登录/注册页 | /api/auth/* | — |
| 已登录普通用户 | 工作台首页 | /api/v1/*(受限) | 8小时 |
| 已登录管理员 | 管理控制台 | /api/admin/* | 4小时(短时高风险) |
4.2 触点二:角色切换
用户场景:用户拥有多个角色(如项目管理员兼普通成员),在操作前切换到对应角色以获得相应权限集。
业务问题:角色切换后权限未及时刷新,导致越权操作;用户不清楚当前角色能做什么;角色继承关系混乱。
需求拆解:
- 角色映射:建立用户与多个角色的关联,支持默认角色设置
- 权限继承:子角色自动继承父角色的基础权限,仅追加差异
- 切换鉴权:切换时校验目标角色是否已被授权给当前用户
- 上下文隔离:切换角色后UI菜单、数据权限立即刷新,不残留上一角色缓存
方案表达:使用「角色-权限继承矩阵」明确每个角色的权限来源,避免重复定义。
| 角色名称 | 父角色 | 继承权限 | 追加权限 |
|---|---|---|---|
| 项目成员 | — | 基础查看 | 任务创建、评论 |
| 项目组长 | 项目成员 | 基础查看+任务创建+评论 | 成员管理、看板编辑 |
| 项目管理员 | 项目组长 | 全部成员/组长权限 | 项目设置、删除项目 |
4.3 触点三:功能使用
用户场景:用户进入某个功能模块(如创建订单、编辑报表、删除记录),系统需判断其是否有权执行该操作。
业务问题:按钮级权限缺失导致用户看到不可操作的功能入口;功能权限与数据权限混淆;批量操作权限未单独定义。
需求拆解:
- 功能级鉴权:按模块-子模块-操作三级定义权限粒度
- 按钮级控制:无权限的按钮直接隐藏或置灰并提示
- 操作类型区分:新增、编辑、删除、导出、打印等各为独立权限项
- 批量操作权限:删除/导出等批量操作需单独授权,不与单条操作共用权限
方案表达:在PRD中附「功能权限矩阵」,每一行对应一个权限点,列包含模块、操作、描述、关联角色。
| 模块 | 操作 | 权限点ID | 描述 |
|---|---|---|---|
| 订单管理 | 创建订单 | ORDER_CREATE | 允许新建销售订单 |
| 订单管理 | 编辑订单 | ORDER_EDIT | 允许修改未审核的订单 |
| 订单管理 | 删除订单 | ORDER_DELETE | 允许删除订单(需二次确认) |
| 订单管理 | 导出订单 | ORDER_EXPORT | 允许导出订单列表为Excel |
4.4 触点四:数据查看
用户场景:用户查看列表、详情或报表时,系统根据其权限过滤行级数据并脱敏列级敏感字段。
业务问题:销售A看到了销售B的客户数据;普通成员看到了项目的财务成本;手机号、身份证等敏感信息明文展示。
需求拆解:
- 行级过滤:按组织树、地域、数据归属人等维度限制可见数据行
- 列级脱敏:对手机号、身份证、银行卡等字段做掩码处理(如138****1234)
- 导出限制:无权限的数据行在导出时自动排除,脱敏字段导出仍保持脱敏
- 数据时效:某些历史数据仅限特定角色查看(如仅管理员可查看已删除的订单)
方案表达:用「数据权限规则表」描述每个数据实体的行过滤条件和列脱敏规则。
| 数据实体 | 角色 | 行过滤条件 | 脱敏列 |
|---|---|---|---|
| 客户列表 | 普通销售 | 归属人 = 当前用户 | 手机号(掩码)、邮箱(掩码) |
| 客户列表 | 销售主管 | 归属部门 = 当前用户部门 | 手机号(掩码) |
| 客户列表 | 系统管理员 | 全部 | 无脱敏 |
4.5 触点五:审批流程
用户场景:用户提交审批单(如采购申请、合同签署),系统按预设规则将审批任务推送给有权限的审批人,并在审批过程中动态判断操作权限。
业务问题:审批人越权查看无关单据;审批转交后权限未正确迁移;审批附件中包含了审批人无权限查看的数据。
需求拆解:
- 流程级授权:按审批节点定义可查看的字段范围和操作(同意/驳回/转交)
- 动态审批人:根据金额、部门、物料类型等字段自动匹配审批人
- 审批转交:转交时携带全部上下文权限,接收人获得该审批节点的临时权限
- 审批附件脱敏:附件中的敏感字段需与详情页保持一致的脱敏规则
方案表达:在PRD中使用「审批节点权限配置表」描述每个审批节点的可操作范围。
| 审批节点 | 可查看字段 | 可执行操作 | 自动匹配规则 |
|---|---|---|---|
| 部门主管审批 | 全部申请字段 | 同意、驳回 | 申请金额 ≤ 5万 |
| 财务经理审批 | 全部申请字段+财务预算 | 同意、驳回、转交 | 5万 < 申请金额 ≤ 20万 |
| 总经理审批 | 全部字段+历史审批记录 | 同意、驳回、转交、加签 | 申请金额 > 20万 |
4.6 跨触点权限字段定义总表
将上述五个触点的权限需求提炼为统一字段,便于在PRD中引用和维护。以下为各触点共用的核心权限字段定义:
| 字段名称 | 类型 | 所属触点 | 描述 |
|---|---|---|---|
| AuthToken | 字符串 | 注册/登录 | 用户会话身份标识,用于后续所有鉴权请求 |
| RoleId | 整数 | 角色切换 | 当前激活的角色ID,决定用户的功能权限 |
| PermissionCode | 字符串 | 功能使用 | 功能权限唯一编码,如 ORDER_CREATE |
| DataRowFilter | 表达式 | 数据查看 | 行级过滤条件,如 owner_id = {currentUserId} |
| ColumnMask | JSON | 数据查看 | 列级脱敏规则,如 {"phone": "MASK"} |
| ApprovalNodeId | 整数 | 审批流程 | 当前审批节点ID,关联该节点的可操作范围 |
4.7 RICE优先级评估
对上述五个触点的权限需求进行RICE评分,确定实现优先级。评分标准:Reach(影响用户数/月)、Impact(对业务的影响度,1~5)、Confidence(需求确定性,%)、Effort(人天)。
| 权限需求 | Reach | Impact | Confidence | Effort | RICE 得分 |
|---|---|---|---|---|---|
| 注册/登录身份验证 | 10,000 | 5 | 100% | 8 | 6,250 |
| 角色切换与继承 | 3,000 | 4 | 90% | 12 | 900 |
| 功能级按钮鉴权 | 8,000 | 5 | 95% | 20 | 1,900 |
| 数据行级过滤 | 6,000 | 4 | 85% | 25 | 816 |
| 数据列级脱敏 | 6,000 | 3 | 80% | 15 | 960 |
| 审批流程授权 | 2,000 | 5 | 90% | 30 | 300 |
4.8 指标验证
每个权限触点需求上线后,通过以下指标验证是否达到预期效果:
- 认证成功率:注册/登录流程中,合法用户一次认证通过率 ≥ 99.5%
- 角色切换延迟:切换角色后权限刷新时间 ≤ 500ms
- 功能越权拦截率:未授权操作被拦截的比例 = 100%(零漏拦截)
- 数据脱敏覆盖率:敏感字段脱敏规则覆盖率 = 100%
- 审批流转正确率:审批单自动匹配到正确审批人的比例 ≥ 98%
4.9 验收标准
针对每个触点的权限需求,制定可量化的验收条目:
| 触点 | 验收条目 | 验收方式 |
|---|---|---|
| 注册/登录 | 未登录用户访问业务接口返回401,不暴露业务数据 | 接口测试+抓包验证 |
| 角色切换 | 切换角色后菜单和操作按钮在3秒内更新为对应权限集 | UI自动化+人工抽检 |
| 功能使用 | 无权限的按钮隐藏或置灰,不可通过URL直接访问 | 安全扫描+前端路由测试 |
| 数据查看 | 用户A无法在列表或详情中看到用户B的数据 | 数据交叉验证+批量导出检查 |
| 审批流程 | 审批人仅能看到当前节点授权的字段,附件同步脱敏 | 逐节点权限矩阵对照验收 |
4.10 交付物模板
以下模板可直接复制到PRD的「权限需求」章节中,按触点逐一填写。
## 权限触点需求描述模板
### 触点名称:[注册/登录 / 角色切换 / 功能使用 / 数据查看 / 审批流程]
**用户场景:**
[描述典型用户在该触点的操作路径]
**业务问题:**
[描述未处理权限时可能出现的风险]
**需求拆解:**
1. [需求点1]
2. [需求点2]
3. [需求点3]
**方案表达:**
- 权限规则:[明确的权限判断逻辑]
- 异常处理:[无权限时的UI表现或接口返回]
- 关联字段:[引用的权限字段ID]
**权限字段定义:**
| 字段名 | 类型 | 描述 |
|--------|------|------|
| [字段] | [类型] | [说明] |
**RICE评估:**
Reach: [数值] Impact: [1-5] Confidence: [%] Effort: [人天]
→ RICE得分:[自动计算]
**验收标准:**
- [验收条目1]
- [验收条目2]