feat(auth): implement user and device authentication
This commit is contained in:
+26
-9
@@ -5,25 +5,30 @@
|
||||
## 当前快照
|
||||
|
||||
- 日期:2026-07-26
|
||||
- 阶段:T-203 任务创建 API 与管理 Web 已完成,准备开始 T-204
|
||||
- 阶段:T-204 用户与设备最小鉴权完成,下一步 T-205
|
||||
- Git:当前分支为 `main`;T-001 至 T-004、T-101 至 T-104、T-201 至 T-203
|
||||
均已纳入 Git 历史
|
||||
均已纳入 Git 历史;T-204 与本文同次提交
|
||||
- 生产代码:`android-buyer/` 已接入 Roubao Android 源码
|
||||
- Android:固定 `main@c8a6d7f03422eb01744b01f3ee77bf7757741f7e`;MIT 许可证已保留
|
||||
- 后端:Go 1.23.0 + Gin 1.11.0 + SQLite + Goose 3.26.0;已实现图片规范化、任务
|
||||
创建/查询/取消 API 和 SSR 管理 Web,Go Blueprint 只作为一次性骨架输入
|
||||
- 后端:Go 1.23.0 + Gin 1.11.0 + SQLite + Goose 3.26.0;已实现图片/任务业务、
|
||||
SSR 管理 Web、ADMIN 会话、BUYER/预授权设备联合认证和 `authctl`
|
||||
- 本机 Android 工具:JDK 17.0.13、Command-line Tools 22.0、SDK 34、
|
||||
Build Tools 34.0.0、Platform Tools/ADB 37.0.0;用户级 SDK 环境变量已设置
|
||||
- Android Studio:未安装;`winget` 静默安装卡住后已终止,不阻塞命令行构建
|
||||
- 测试:`lintDebug test assembleDebug` 成功;App 两个变体、task contract 和导入器
|
||||
共 26 份报告、166 次测试,0 failure、0 error、0 skipped
|
||||
- 后端测试:`GOTOOLCHAIN=local go test -count=1 ./...` 共 99 个测试通过;
|
||||
全包 race、`go vet ./...`、API/migration Windows 构建和根 `init.ps1` 均通过
|
||||
- 后端测试:`GOTOOLCHAIN=local go test -count=1 ./...` 共 142 个测试通过;
|
||||
全包 race、`go vet ./...`、API/migration/authctl Windows 构建和根 `init.ps1`
|
||||
均通过
|
||||
- 原型:4 个管理 Web 页面和 7 个 Android 页面均可离线独立打开;Playwright
|
||||
以 1440×900、390×844、360×800 验证 36 个页面/视口组合,无页面横向溢出、
|
||||
脚本错误或外部请求,Android 可见交互控件均不小于 44px
|
||||
- 管理 Web:真实 Gin/SQLite 流程已完成图片上传、任务创建、列表、详情参考图和
|
||||
待领取取消;同三种视口无横向溢出,可见操作控件不小于 44px
|
||||
待领取取消;ADMIN 登录/退出和安全返回路径已接入,同三种视口无横向溢出,
|
||||
可见操作控件不小于 44px
|
||||
- 鉴权:bcrypt 密码、8 小时管理 session、1 小时 App access token 和设备 secret
|
||||
均不明文落库;设备首次绑定原子化,禁用/过期/撤销每次请求重新检查;管理/App
|
||||
登录各自按来源地址执行内存有界限流,账号和设备支持 `authctl` 启停
|
||||
- Workflow:纯 Kotlin runner 已支持步骤 timeout、最多 3 次 retry、安全阻塞、
|
||||
用户停止和单 runner 并发拒绝;T-102 已接入搜索加有界候选采集五步
|
||||
- TaskSource:严格 CLI 已生成并验证真实私有 ProbeTask;默认 APK 不含私有 fixture
|
||||
@@ -59,6 +64,7 @@
|
||||
| `docs/tasks/T-201.md` | DONE | Go-Gin、SQLite、Goose migration 和健康检查骨架 |
|
||||
| `docs/tasks/T-202.md` | DONE | 生成并确认 P0 Web/App 低保真原型 |
|
||||
| `docs/tasks/T-203.md` | DONE | 图片/任务 API、SQLite 业务层和 SSR 管理 Web |
|
||||
| `docs/tasks/T-204.md` | DONE | 用户、管理会话和预授权设备联合身份 |
|
||||
| `docs/design/` | 已确认 | T-202 原型索引、4 个管理页和 7 个 Android 页面 |
|
||||
| `deepseek总结.txt` | 已有 | 历史讨论摘要,不是正式需求权威 |
|
||||
| `android-buyer/` | 已有 | Roubao `main` 固定 commit 的 Android 基线 |
|
||||
@@ -69,9 +75,9 @@
|
||||
|
||||
## 任务摘要
|
||||
|
||||
- 已完成:T-001 至 T-004、T-101 至 T-104、T-201 至 T-203。
|
||||
- 已完成:T-001 至 T-004、T-101 至 T-104、T-201 至 T-204。
|
||||
- 正在进行:无。
|
||||
- 下一个可领取任务:T-204 实现账号、角色、会话和设备身份;完成后 T-205 可开始。
|
||||
- 下一个可领取任务:T-205 原子领取、租约和状态机。
|
||||
|
||||
## 当前可运行内容
|
||||
|
||||
@@ -84,6 +90,9 @@ $env:RUN_START_COMMAND = "1"
|
||||
Set-Location backend-api
|
||||
$env:GOTOOLCHAIN = "local"
|
||||
go run ./cmd/migrate up
|
||||
$env:CMROUBAO_AUTH_PASSWORD = "至少 12 个 UTF-8 字节"
|
||||
go run ./cmd/authctl create-user ADMIN admin
|
||||
Remove-Item Env:CMROUBAO_AUTH_PASSWORD
|
||||
go run ./cmd/api
|
||||
```
|
||||
|
||||
@@ -115,6 +124,14 @@ SQLite 仓储、管理 API 和 SSR Web。创建/上传幂等,列表稳定分
|
||||
使用双提交 CSRF;这不是正式鉴权。真实 HTTP/Playwright 和 migration CLI smoke、
|
||||
99 个 Go 测试、全包 race/vet、Windows 构建与根 `init.ps1` 全部通过。
|
||||
|
||||
2026-07-26 完成 T-204:新增 users/devices/admin_sessions/access_tokens 与任务 actor
|
||||
migration、bcrypt 密码、opaque 凭证、`authctl`、管理登录/退出和 App 联合认证。
|
||||
ADMIN Cookie 与 BUYER 设备 Bearer token 完全隔离;非 loopback 监听必须配置内建
|
||||
TLS。真实 SQLite/Gin smoke 验证 migration up/down/up、账号/设备预置、App token、
|
||||
管理登录、任务创建 actor 和退出;Playwright 在 1440×900、390×844、360×800
|
||||
验证无横向溢出,发现并修复退出路由漏装配及 T-203 旧 CSRF Cookie 路径兼容问题。
|
||||
142 个 Go 测试、全包 race/vet、Windows 三入口构建与根 `init.ps1` 均通过。
|
||||
|
||||
## 维护规则
|
||||
|
||||
发生以下变化时覆盖更新本文:
|
||||
|
||||
Reference in New Issue
Block a user