第2章:权限需求的用户场景分析

2.1 识别需要权限的角色

权限需求的起点是明确“谁”需要“什么”权限。角色是权限分配的最小单元,一个用户可能属于一个或多个角色。识别角色时,要避免直接以岗位名称替代角色,应当基于用户在特定场景下的行为集合来定义。

经验原则:一个角色用户只属于一个角色组。如果同一个人必须跨组操作,应拆分为“主角色+临时角色”或通过审批流解决,而不是给一个角色挂载过多权限。

核心角色类型清单:

角色类型 典型岗位 权限需求特征
基础操作员 录入员、客服、仓库拣货员 读写本人/本组数据,无管理或配置权限
业务主管 组长、区域经理 读取下属数据,修改本组业务配置
系统管理员 IT运维、安全专员 全系统配置、用户管理、审计日志
外部用户 客户、供应商、访客 仅访问指定门户/数据,不可操作系统后台
审批者 财务总监、风控经理 只读业务详情,拥有审批/驳回能力
案例:在“订单取消审核”场景中,客服(操作员)发起申请,组长(主管)审核,财务(审批者)复审退款。如果不识别这三个角色,就会导致或权限过大(客服直接退款)或权限缺失(组长看不到详情)。

2.2 用户场景描述模板

场景描述是连接角色与权限的桥梁。一套标准化的场景模板,能够确保需求方、产品经理、开发、测试对“谁在什么情况下做什么”达成一致。

推荐的结构化场景模板:

场景名称:[动词+目标,如“导出月度销售报表”]
触发条件:[时间/事件/用户主动操作]
前置条件:[用户必须已登录/拥有某个基础角色]
参与角色:[场景中涉及的所有角色,用“主要”、“辅助”标注]
场景流程:
  1. [主要角色] 发起操作
  2. [系统] 验证当前角色是否具备该操作的权限
  3. [主要角色] 填写/选择必要参数
  4. [系统] 执行并返回结果
后置条件:[数据状态变化/日志记录/通知发送]
异常流程:
  - 权限不足时:返回无权限提示,不暴露数据
  - 数据不存在时:返回空结果,不报错
常见返工点:很多PRD只写“管理员可以修改”,但未描述“修改时是否需要原密码验证”、“修改后是否需要主管审批”、“修改记录是否保留”。场景模板必须补全后置条件和异常流程。

2.3 场景与权限的对应关系

每个用户场景都会映射到一组权限点。一个场景可能涉及多个权限点(查看、新建、修改、删除),同一个权限点也可能被多个场景复用。下图展示了从场景到权限的典型映射链路。

场景 → 角色 → 权限 映射链路 场景A:发起退款 场景B:审核退款 场景C:查看报表 角色:客服 角色:主管 角色:经理 退款申请(创建) 退款审核(更新) 报表查看(读取) 映射规则 1. 一个场景绑定一个主要角色(角色用户必须完全匹配) 2. 一个角色可以拥有多个权限点(创建、读取、更新、删除)

场景与权限的对应关系表:

场景编号 场景名称 主要角色 所需权限 权限类型
SCN-001 提交退款申请 客服 refund:apply 创建(Create)
SCN-002 审核退款申请 主管 refund:review 更新(Update)
SCN-003 查看退款报表 经理 report:refund:read 读取(Read)
SCN-004 取消待审核退款 客服 refund:cancel 删除(Delete)
模板应用示例:假设我们做“SaaS企业版后台”产品的权限需求,用上述模板填写“场景A:企业管理员邀请新成员”:

触发条件:管理员点击“添加成员”按钮
前置条件:管理员已登录,且当前企业名额未用满
参与角色:主要:企业超级管理员;辅助:接收邀请的新用户(无权限)
流程:1.管理员填写新成员邮箱与角色 → 2.系统校验管理员是否拥有“invite:create”权限 → 3.系统发送邀请邮件 → 4.新用户点击链接激活
后置条件:邀请记录写入审计日志;企业已用名额+1
异常流程:如果管理员无邀请权限,返回“请联系超级管理员”;如果邮箱已存在,返回“用户已存在”。

2.4 从场景描述到权限定义的常见问题

  • 角色混淆:将“岗位”直接当作“角色”。例如“客服主管”在审核退款场景中是主管角色,但在查看团队考勤场景中可能是“管理员”角色。必须按场景独立定义角色。
  • 权限颗粒度太粗:只定义“客服-读权限、主管-写权限”,无法区分“退款申请创建”和“退款审批更新”。应拆分为原子权限点。
  • 遗漏异常场景:只写正常流程,未写“权限不足时”、 “操作被拒绝时”的体验要求,导致开发阶段反复沟通。
  • 场景重复覆盖:多个场景描述同一操作,但用了不同的场景名称,导致权限点重复定义。
避坑提醒:场景描述不要写成“用户故事”风格(“作为客服,我想要退款权限,以便处理投诉”),这种描述无法直接支撑权限定义。请使用上述结构化模板,让需求精确到“创建、读取、更新、删除”级别。