feat(t226): add Go ERP session login

This commit is contained in:
QiuSW
2026-07-29 09:51:41 +08:00
parent c2f340d067
commit a5a61c05d0
23 changed files with 1633 additions and 33 deletions
+19 -5
View File
@@ -4,7 +4,7 @@ title: Go ERP 会话管理与 Admin 验证码登录
phase: 2
deps:
- T-225
status: TODO
status: DONE
created: 2026-07-29
context_ref: d62a4af
work_branch: null
@@ -48,10 +48,10 @@ write_paths:
## 验收要点
- [ ] 配置缺失、验证码获取、错误/过期验证码、登录成功、会话过期和并发请求有单元/HTTP 测试。
- [ ] Admin 页面在桌面和手机视口显示状态、验证码和可修复错误,不显示密码、Cookie、JWT 或验证码文本。
- [ ] 会话请求和查询共享同一受控 Cookie jar;进程重启后明确要求重新登录。
- [ ] `go test ./...`、`go vet ./...` 通过;不访问线上 ERP。
- [x] 配置缺失、验证码获取、错误/过期验证码、登录成功、会话过期和并发请求有单元/HTTP 测试。
- [x] Admin 页面在桌面和手机视口显示状态、验证码和可修复错误,不显示密码、Cookie、JWT 或验证码文本。
- [x] 会话请求和查询共享同一受控 Cookie jar;进程重启后明确要求重新登录。
- [x] `go test ./...`、`go vet ./...` 通过;未访问线上 ERP。
## 边界
@@ -62,3 +62,17 @@ write_paths:
## 执行记录
- 2026-07-29:由 T-225 依赖创建,等待协议契约完成。
- 2026-07-29:开始实施;T-225 已由 `c2f340d` 完成,当前仍未访问线上 ERP。
- 2026-07-29:新增 `SessionManager`,以同一受锁 Cookie jar 完成验证码、登录和
`/am/user/get` 校验;只保存内存会话,验证码 ticket 默认 5 分钟后失效。账号/密码仅由
`CMROUBAO_SHUNYUNBAO_*` 环境读取,未配置不会阻止其他后端功能启动。
- 2026-07-29:新增 ADMIN 的 `/erp` 连接页和 `/api/v1/erp-session*` 接口;所有写接口
继续受 ADMIN CSRF middleware 保护。浏览器页面只输入验证码,图片和 ticket 均 `no-store`,
不返回 ERP Cookie、JWT、用户资料、密码或原始错误正文。
- 验证:在 `backend-api/` 执行 `$env:GOTOOLCHAIN='local'; go test ./...; go test -race ./...;`
`go vet ./...; go build ./cmd/api; go build ./cmd/migrate; go build ./cmd/authctl`,全部通过。
会话/HTTP/SSR 使用 `httptest` 伪 ERP;未访问线上 ERP。
- UI smoke:隔离 SQLite 上以 `smoke-admin` 登录实际 Gin 服务,Chrome 以 1440x900 和
390x844 验证 `/erp` 未配置状态无横向溢出;截图只写入系统临时目录,未进仓库。
- 未验证项:真实 ERP 凭证、人工验证码和厂商授权检查有意留给部署前人员操作;T-227
才把会话接入货运同步 source。