4.6 KiB
4.6 KiB
“我的”Tab 设置与账号安全 PRD
更新时间:2026-04-19
0. 目标
把“设置”入口正式定义为账号安全中心,统一承载:
- 账号基础信息查看
- 当前安全状态
- 登录设备管理
- 更换手机号
- 最近账号操作记录
- 退出登录与退出全部设备
这个模块直接建立在当前仓库已有的账号接口之上,是“我的”页最优先落地的正式功能。
1. 当前现状
当前仓库已具备以下基础能力:
GET /api/auth/risk-blocksGET /api/auth/sessionsGET /api/auth/audit-logsPOST /api/auth/phone/changePOST /api/auth/logoutPOST /api/auth/logout-allPOST /api/auth/sessions/:sessionId/revoke
说明当前账号安全不是从零开始,而是缺少稳定的信息架构和最终产品定义。
2. 产品范围
2.1 本期要做
- 设置与账号安全弹窗
- 安全状态展示
- 登录设备管理
- 更换手机号
- 操作记录查看
- 退出当前设备
- 退出全部设备
2.2 本期不做
- 修改密码正式入口
- 实名认证
- 邮箱绑定
- 多因子认证
3. 信息架构
设置中心建议固定为五段:
- 账号概况
- 当前安全状态
- 登录设备
- 更换手机号
- 账号操作记录
交互层级要求补充为:
- 设置首页只展示分区入口与危险操作,不在首页内联展开具体详情
- 点击任一分区入口后,必须进入独立二级面板
- 二级面板负责单一任务,不允许把详情继续堆在入口列表下面
- 更换手机号属于独立操作面板,不允许在账号概况面板内直接展开表单
底部保留两个危险操作按钮:
- 退出登录
- 退出全部设备
4. 详细设计
4.1 账号概况
展示:
- 登录方式
- 手机号脱敏值
- 微信绑定状态
- 账号状态
这里只看信息,不做大编辑动作。
标题约束:
- 设置首页标题固定表达“设置”或“设置与账号安全”
- 设置首页标题区域不展示手机号,也不允许把手机号当作主标题替代昵称
- 手机号只允许出现在账号概况信息项中,以脱敏值展示
4.2 当前安全状态
展示当前账号命中的风控保护:
- 手机号保护
- 当前网络保护
每条状态可执行:
- 解除保护
解除动作必须经过后端校验。
4.3 登录设备
每条设备展示:
- 设备类型
- 最近活跃时间
- 到期时间
- IP 脱敏信息
- 是否当前设备
非当前设备支持:
- 踢下线
4.4 更换手机号
流程:
- 输入新手机号
- 获取验证码
- 如有需要,完成人机校验
- 输入验证码
- 提交修改
规则:
- 新号码不能等于当前号码
- 已被其他账号绑定的号码不可用
- 风控命中时必须遵循现有保护逻辑
4.5 操作记录
展示最近账号行为:
- 登录
- 绑定手机号
- 更换手机号
- 退出登录
- 踢设备
- 触发图形验证码
- 风险保护
5. 前后端职责边界
5.1 前端职责
- 展示状态
- 收集输入
- 呈现 loading / success / error
5.2 后端职责
- 风控判断
- 图形验证码触发
- 会话列表返回
- 设备撤销
- 日志审计
- 手机号换绑
前端不允许自己决定:
- 是否需要验证码
- 是否允许解除风控
- 是否允许换绑
6. 接口对齐
首期优先复用现有接口:
GET /api/auth/meGET /api/auth/risk-blocksPOST /api/auth/risk-blocks/:scopeType/liftGET /api/auth/sessionsPOST /api/auth/sessions/:sessionId/revokeGET /api/auth/audit-logsPOST /api/auth/phone/changePOST /api/auth/logoutPOST /api/auth/logout-all
如需补充,只增加展示层所缺的聚合字段,不重建接口体系。
7. 前端实现要求
- 设置继续采用当前账号弹窗基础形态即可
- 移动端优先底部弹层,桌面端可居中弹窗
- 设置首页只保留分区入口,不直接承载分区详情内容
- 分区详情必须通过独立子面板承载,移动端优先使用全宽底部子弹层,桌面端使用覆盖在设置首页之上的居中子面板
- 更换手机号必须通过独立操作面板完成,不再使用当前面板内联展开表单
- 危险操作按钮与普通按钮必须明显区分
- 设置首页标题处禁止展示手机号、脱敏手机号或手机号形态的 displayName
8. 验收标准
- 用户能看到当前账号安全信息
- 能查看并管理登录设备
- 能按规则更换手机号
- 能查看最近账号操作记录
- 退出登录和退出全部设备都能稳定生效