Skip to content

feat: 实现登录与注册界面(Refs #157) #159

Description

@huyanxius

问题

会话层提供了登录、注册、发码等操作,但没有任何界面调用它们。用户无法登录,因此产品的全部功能都无法使用。

目标

提供账号面板,覆盖注册与两条登录路径,让用户能够真正进入产品。

范围

包含:

  • 账号面板,入口为查询参数 ?account=login,该地址是会话层路由守卫既定的跳转目标
  • 验证码免密登录:填写邮箱、获取验证码、提交
  • 密码登录:填写邮箱、密码与验证码
  • 注册:邮箱、密码、验证码,昵称可选
  • 发送验证码的 60 秒冷却倒计时
  • 后端业务错误原样呈现,包括账号被封禁、验证码错误或过期、请求过于频繁
  • 登录成功后按 returnTo 回跳,无 returnTo 时回到首页

不包含:

  • 找回密码。后端接口尚不存在,缺口见 feat: 补齐找回密码接口 #154。面板中保留该入口的位置并说明尚未开放,不做隐藏,也不做点击无反应的死链。
  • 第三方登录、多因素认证。

实现约束

  • 校验规则与后端保持一致:密码 8 到 128 位,验证码固定 6 位,昵称不超过 50 字。
  • 验证码有效期 5 分钟,发送冷却 60 秒;/auth/send-code 属于敏感接口,限流为每 IP 每分钟 10 次。倒计时结束前不得再次发送。
  • /auth/login-by-code 在账号不存在时会自动注册。界面必须让用户知道这一次操作创建了新账号,不能默不作声。
  • 提交过程中禁止重复提交,且失败后保留已填内容。
  • 默认呈现哪条登录路径取决于 proposal: Windup 前端用户模块的产品口径 #157 的结论,当前倾向以免密登录为主、密码登录为次要入口。

验收标准

  • 三条路径(免密登录、密码登录、注册)均可完成并进入已登录状态。
  • 发码后按钮进入 60 秒倒计时,期间不可再次点击。
  • 后端返回的业务错误在面板内可见,且不清空已填写的内容。
  • returnTo 进入面板并登录成功后,回到该地址。
  • 免密登录创建新账号时,界面给出明确告知。

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions