外观
Day 2:身份、Session、OAuth 与 Onboarding
当日成果
把 Day 1 的最小登录扩展成可用于成熟产品的身份体系:邮箱密码、邮箱验证码登录/首次建号、密码重置、OAuth、设备 session 和 onboarding。
能力边界
包括:
- password credential。
- email login code 与 verification。
- password reset。
- Google/GitHub/Apple 身份合同与受控 adapter。
- access/refresh session rotation。
- session list/revoke。
- current user/profile。
- onboarding status 和 mood。
- Admin 用户/session 基础查看。
账号不可恢复删除延后到 Day 12。
前置条件
- Day 1 Foundation
GREEN。 - 测试邮件 adapter。
- OAuth 使用 sandbox/fake 或课程提供的测试配置。
能力合同
| Capability ID | API | Admin | iOS | Android | 关键证据 |
|---|---|---|---|---|---|
| ID-001 密码登录 | ✓ | — | ✓ | ✓ | login E2E |
| ID-002 邮箱验证码 | ✓ | ✓ | ✓ | ✓ | single-use/expiry |
| ID-003 OAuth | ✓ | ✓ | ✓ | ✓ | identity linking |
| ID-004 Session 管理 | ✓ | ✓ | ✓ | ✓ | revoke/recovery |
| ID-005 Onboarding | ✓ | ✓ | ✓ | ✓ | state persistence |
调查提示
text
进入 IDENTITY-SESSION。只读检查真实 Prisma identity/auth 模型、token 生命周期、
OAuth identity 唯一性、移动端凭据存储、Admin session 和现有验收。列出可能导致
账号串联、session 复活、验证码重放或客户端状态残留的风险。1
2
3
2
3
学员决策
- 邮箱验证码是登录与首次建号一体,还是独立注册。
- OAuth provider identity 如何唯一化和合并。
- access/refresh token 生命周期。
- 普通 session expiry 与显式 logout 的本地数据清理差异。
Feature Goal
text
/goal 完成 IDENTITY-SESSION 能力包,使邮箱密码、邮箱验证码、OAuth、密码重置、
session 管理和 onboarding 在 API/Admin/iOS/Android 行为一致。以 identity contract
suite、session rotation/revoke tests、两端重新启动恢复和 Admin 审计为完成证据。
不得弱化 token、验证码、identity 唯一性或凭据存储安全。1
2
3
4
2
3
4
跨端实施面
API
- auth models、token rotation、one-time challenge。
- provider adapter、audit event、rate limit。
Admin
- 用户身份、session 和 auth event 的只读/受控操作。
iOS
- Keychain、OAuth callback、session owner replacement、onboarding。
Android
- encrypted credential storage、typed auth graph、OAuth intent、onboarding。
Mandatory gates
- [ ] 验证码 single-use、expiry、rate limit。
- [ ] refresh rotation 和 replay protection。
- [ ] revoke 后两端不能继续使用旧 session。
- [ ] OAuth 不产生重复或错误合并用户。
- [ ] restart 后恢复正确身份。
- [ ] logout 与 expiry 的本地清理语义符合规格。
- [ ] Admin 操作留下审计证据。
常见假完成
- OAuth 只做 UI 按钮。
- refresh token 永久有效或可重复使用。
- 不同 provider 用邮箱盲目合并。
- logout 只清内存,不清安全存储。
- 测试 fake 比真实 Prisma 多出不存在的 relation。
Checkpoint
冻结身份合同、token/session 时序图、两端 auth acceptance、Admin 审计和 identity-session-green。