feat(auth): P0 登录与会话(迁移 v16、argon2id、HttpOnly Cookie)
- 迁移机制:schema::migrate 支持 15→16,新增 admin/session/setting 表 - 接口:session/setup/login/logout/password;SameSite=Strict + Origin 校验 + 失败限流 - 会话只存 token 的 sha256;改密清空全部会话 - 前端:/login 独立壳(首次=设置密码),页头登录/退出切换 - 测试:37 passed(迁移 + 登录/会话 4 例) - 文档:README 登录说明、docs/ADMIN-PLAN.md 方案与 P0 记录
This commit is contained in:
@@ -144,3 +144,17 @@ DELETE /api/items/:id
|
||||
3. 读接口是否也要登录:公开(推荐)/ 全站需登录。
|
||||
4. 内容编辑是否要「草稿 → 发布」两态:先不要(推荐,保持即时生效)/ 要。
|
||||
5. 编辑图片:先只接受 URL(推荐,P2 后期再做上传)/ 首期就要上传。
|
||||
|
||||
## 11. 实施记录
|
||||
|
||||
### P0(已完成,2026-10-29)
|
||||
|
||||
- 迁移机制:`user_version 15 → 16`,`schema::migrate` 逐级升级;v15 老库启动时自动补 `admin` / `session` / `setting` 三表;
|
||||
- 登录:`POST /api/auth/setup`(仅首次)、`/login`、`/logout`、`PATCH /api/auth/password`;argon2id + sha256(token) 落库;
|
||||
- 会话:HttpOnly + SameSite=Strict + Path=/,7 天;改密后所有会话失效;
|
||||
- 防护:Origin 同源校验、连续失败 5 次锁 60 秒;
|
||||
- 前端:`/login` 独立壳(入口按 pathname 分流)、页头登录/退出登录切换;
|
||||
- 测试:后端 37 个单测(新增迁移 2 个 + 登录 4 个),登录流程 e2e 手动脚本验证通过。
|
||||
|
||||
**未做(P1/P2)**:`/admin` 设置页、侧栏/页头编辑、内容就编辑、`setting` 表的读写接口。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user