---
type: pointer
title: 登录与验证注册页面需求
summary: 按Figma定义登录与验证注册的字段、数量、操作与服务缺口，替换历史视觉基线
updated: 2026-10-08
---

# 登录与验证注册

路由：`/login`。视觉与结构依据：[Figma桌面原稿](https://www.figma.com/design/DfWRfnw965ocH6lmlSYGgs)。旧页面不是视觉验收基线；代码和现有数据库只用于确认可复用合同与运行依赖。

## 用户任务

登录后进入个人监控工作区，已登录用户返回安全的目标页面。

## 页面数据、功能与持久化

| 区域/操作 | 必需字段 | 数量与范围 | 当前实现及持久化决定 |
|---|---|---|---|
| 结构 | 64px顶栏、涟漪图、品牌标题、3条动态、420px表单 | 桌面1040px内容；左556/间隔64/右420 | 纯展示不存业务表；移动隐藏插图 |
| 账号登录 | username、password、returnTo | 一次提交 | 现有会话API，服务端设置会话；密码不进本机存储/日志 |
| 邮箱验证 | email、challenge、code、重发状态 | 一次challenge | 原流程；忘记密码入口提供邮箱验证登录，不冒充修改密码 |
| GitHub | 服务端authorize URL、state | 仅配置启用时出现 | OAuth回跳校验；不开放重定向 |
| 注册完善 | 用户名/密码、验证身份 | 沿既有流程 | 无法凭账号密码直接注册未验证身份 |
| 页脚 | 关于/隐私/条款/更新日志 | 4链接 | 删除旧帮助入口与冗余登录底栏 |

## 替换边界

按稿重新排左右栏及表单位置；保留真实认证流程。截图中的hydration差异来自翻译扩展在html注入属性；仅DocumentRoot容忍该层差异，正文错误仍检测。

## 接口与业务落点

下列为本页业务读取/提交入口。全局会话、头像、站点元信息和共享组件中未在本页触发的导出函数不算新增页面能力。请求类型、响应与错误以生成客户端和后端为准。

| 页面调用 | 方法和路径 | 请求 → 响应合同 | 实现依据 |
|---|---|---|---|
| `createIdentitySession` | `POST /api/identity/sessions` | `IdentityPasswordLoginInput` → `IdentitySessionView` | [客户端](../../../../frontend/src/api/identity.ts) · [后端](../../../../backend/app/api/routers/identity.py) |
| `getLoginOptions` | `GET /api/identity/options` | `无业务入参` → `LoginOptionsView` | [客户端](../../../../frontend/src/api/identity.ts) · [后端](../../../../backend/app/api/routers/identity.py) |
| `getPublicHotStories` | `GET /api/publication/hot` | `getPublicHotStoriesParams` → `PublicStoriesPage` | [客户端](../../../../frontend/src/api/gongkaifabu.ts) · [后端](../../../../backend/app/api/routers/publication.py) |
| `sendEmailLoginCode` | `POST /api/identity/email/challenges` | `EmailCodeInput` → `EmailChallengeView` | [客户端](../../../../frontend/src/api/identity.ts) · [后端](../../../../backend/app/api/routers/identity.py) |
| `startGithubLogin` | `POST /api/identity/github/authorize` | `GithubAuthorizationInput` → `GithubAuthorizationView` | [客户端](../../../../frontend/src/api/identity.ts) · [后端](../../../../backend/app/api/routers/identity.py) |
| `verifyEmailLoginCode` | `POST /api/identity/email/sessions` | `VerifyEmailCodeInput` → `IdentitySessionView` | [客户端](../../../../frontend/src/api/identity.ts) · [后端](../../../../backend/app/api/routers/identity.py) |

数据落点：[identity_users](../reference/13-现有数据库字典.md#identity_users)、[identity_sessions](../reference/13-现有数据库字典.md#identity_sessions)。这是当前依赖定位，不代表这些表均为重新设计时必须新建；详细字段/键/关系及保留原因见[页面数据库设计](../reference/09-全站页面数据库设计.md)。


## 交互、权限与验收

- 正常、空、加载、错误、无权限分别验收；未知数值显示“—”，没有观测不画虚构曲线，过期数据标明时间。
- 对照 Figma 原稿在 1440px / 390px 验收布局、标题、间距、滚动和键盘焦点。组件检查通过不替代视觉评审。
- 页面读取不启动采集、模型或外发通知；写操作显式触发，失败保留输入，版本冲突先重读。公开读取继续执行逐项许可；个人数据 owner 来自会话。
- 设计中存在而服务没有提供的字段是待接入需求，不因旧页面没有该控件而撤销，也不据此预建通用平台。

跨页约束见[接口设计](../reference/08-全站页面接口设计.md)、[数据库设计](../reference/09-全站页面数据库设计.md)、[非功能](../reference/10-全站非功能需求.md)及[验收](../reference/11-全站验收场景.md)。实施进度只记 BACKLOG。
