add auth check
This commit is contained in:
@@ -140,3 +140,47 @@
|
||||
### 验证
|
||||
|
||||
- 已完成修改文件的 Python、JavaScript 语法检查,未发现语法错误。
|
||||
|
||||
## 2026-08-03
|
||||
|
||||
### Server:下载接口改造为一次性临时 URL 并绑定来源 IP
|
||||
|
||||
- 文件下载流程由“业务接口返回可复用直链”改为“业务接口签发一次性临时 URL + 下载后立即失效”。
|
||||
- 新增下载入口 `GET /downloads/:ticket`,票据校验包含有效期、一次性消费和请求来源 IP 一致性。
|
||||
- 旧入口 `GET /files/:fileID` 已停用并固定返回 `403`,避免 fileID 直链被转发复用。
|
||||
- `downloadModel` 统一要求 `adminToken`,下载能力与管理权限保持一致。
|
||||
- 返回下载 URL 的业务接口已统一改为临时票据地址:`downloadModel`、`getPendingPanelFile`、`getIdentificationFileDownload`、`getControlFileDownload`、`getIdentificationConfig`、`getVolumeConfigFile`、`getVolumeConfigRequest`。
|
||||
|
||||
涉及文件:
|
||||
|
||||
- `server/src/app.js`
|
||||
- `server/test/server.test.js`
|
||||
- `ControlPanel/server-client.js`
|
||||
- `server/features.md`
|
||||
|
||||
### 验证
|
||||
|
||||
- 已完成 `server` 全量测试(21 项)通过。
|
||||
- 已完成 ControlPanel 无 GUI 内核联调测试通过(`model-handlers` 与 `license-manager` 相关用例)。
|
||||
- 已重启 `reinloop-server.service` 并验证:同一临时下载 URL 首次下载成功,二次访问返回 `403`。
|
||||
|
||||
### Server + ReinLoop:设备分路由与最小权限访问
|
||||
|
||||
- 新增 `POST /device` 设备侧路由,ReinLoop 通过 `deviceAuth`(`licenseId` + `deviceId`)换取短期 `deviceToken` 后访问设备接口。
|
||||
- 设备侧接口采用白名单权限,不再使用 `adminToken`,并强制按 `deviceId` 隔离目录和模型访问范围。
|
||||
- ReinLoop 客户端核心模块已切换为 `/device` 访问链路:设备心跳、模型列表与下载、辨识配置下载、容积请求、辨识反馈、控制与辨识结果上传申请。
|
||||
- ReinLoop 离线宽限默认调整为 `100` 小时(`REINLOOP_LICENSE_OFFLINE_HOURS` 默认值)。
|
||||
|
||||
涉及文件:
|
||||
|
||||
- `server/src/app.js`
|
||||
- `server/features.md`
|
||||
- `ReinLoop/api.py`
|
||||
- `ReinLoop/license_utils.py`
|
||||
- `ReinLoop/core/model_manager.py`
|
||||
- `ReinLoop/core/identification_config.py`
|
||||
- `ReinLoop/core/volume_config.py`
|
||||
- `ReinLoop/core/identification_feedback.py`
|
||||
- `ReinLoop/core/device_heartbeat.py`
|
||||
- `ReinLoop/core/data_collector.py`
|
||||
- `ReinLoop/core/identification.py`
|
||||
|
||||
Reference in New Issue
Block a user