M4-T06: add TOTP second factor to login (totp_code + recovery codes)
This commit is contained in:
@@ -212,7 +212,7 @@ Phase B(TOTP,可选配)
|
||||
- **Reviewer checklist**: 恢复码只存哈希、明文仅一次;secret 不进 OpenAPI 示例/日志;`requirements.txt` 锁定 `pyotp`。
|
||||
|
||||
### M4-T06 — 登录二因子(login 加 `totp_code`)
|
||||
- **Status**: `todo` · **Depends**: M4-T05, M4-T02
|
||||
- **Status**: `done` · **Depends**: M4-T05, M4-T02
|
||||
- **Files**: `modify app/api/routes/api/session.py`、`app/schemas/session.py`(`LoginRequest.totp_code` 可选)、`app/services/totp.py`(校验 + 消费恢复码);`modify tests/test_api_session.py`、`tests/test_api_totp.py`
|
||||
- **Steps**: 密码通过后:若 `totp_enabled` 且无 `totp_code` → 401 `{totp_required:true}`(不发 session、退避照算);有 `totp_code` → 校验 TOTP 或恢复码(命中恢复码置 `used_at`)→ 通过发 session;未启用 → 现状。
|
||||
- **Out of scope / 不要碰**: 不改 setup/enable(T05);不动退避公式(T02)。
|
||||
|
||||
Reference in New Issue
Block a user