背景

https://github.com/halo-dev/halo/issues/5556

流程图

sequenceDiagram participant 用户 participant 前端界面 participant 后端服务 participant 邮件服务 participant 数据库 用户->>前端界面: 点击"忘记密码" 前端界面->>后端服务: 提交邮箱地址 后端服务->>后端服务: 生成重置令牌 后端服务->>邮件服务: 发送含重置链接的邮件 邮件服务-->>用户: 接收密码重置邮件 用户->>邮件服务: 点击重置链接 邮件服务->>前端界面: 跳转到密码重置页(带token) 前端界面->>后端服务: 提交新密码和令牌 后端服务->>后端服务: 解密令牌 后端服务->>数据库: 验证邮箱是否存在 alt 邮箱存在 后端服务->>数据库: 更新用户密码 后端服务-->>前端界面: 返回成功消息 前端界面-->>用户: 显示密码重置成功 else 邮箱不存在 后端服务-->>前端界面: 返回"账户不存在" 前端界面-->>用户: 提示用户邮箱未注册 end