fix: isolate in-memory client persistence
This commit is contained in:
@@ -30,6 +30,8 @@ commits: none
|
||||
- 单次请求使用同一认证快照,因为签名、Cookie 和响应解密不能混用不同代 token。
|
||||
- 设备 spec 缓存同时兼容 Go 顶层标识和 Python `method` 格式,因为两个实现默认共享认证目录和缓存文件名。
|
||||
- 整数规格校验使用精确十进制/有理数比较,因为 `float64` 无法安全表达 `2^53` 以上整数。
|
||||
- 内存认证的同步持久化回调保留在登录串行区内,以确保并发登录/刷新严格有序且回调失败时不安装候选认证。把回调移到所有内部锁外会允许旧回调在新认证提交后覆盖外部状态;票据或 worker 若同步等待,调用者持有回调所需锁时仍会形成 ABBA。因此公共契约明确要求回调和 Client 调用遵守锁顺序,而不是承诺任意应用锁安全。
|
||||
- 文件客户端默认把设备 spec 缓存在认证文件目录;内存客户端默认不缓存,只有显式 `WithDeviceCacheDir` 才写入 spec 文件。
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -56,6 +58,8 @@ auth, err := client.Login(ctx)
|
||||
- `gofmt -w *.go`
|
||||
- `go test -count=1 ./...`:通过
|
||||
- `go vet ./...`:通过
|
||||
- `go test ./... -count=20`:通过
|
||||
- `go test -race ./...`:通过
|
||||
- 独立规格审查和逐阶段代码质量审查均通过。
|
||||
- 测试覆盖固定加密向量、gzip/大小限制、QR 与静默刷新、本地加密 HTTP 端点、分页异常、精确大整数、MIoT HTML 变体、Python 缓存迁移和 context 取消。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user