Notion Files Management v2.0.0-Beta-4
新增
- 第三方开放 API + API Key 鉴权:业务接口除原有 session cookie 外,新增
Authorization: Bearer nfm_...双通道鉴权。API Key 支持命名、权限范围(scope)、可选过期、启停、删除、轻量限流(每分钟请求数)、最后使用记录;明文只创建时返回一次,落盘只存 sha256 hash。新增backend/app/apikeys.py与backend/app/routers/apikeys.py(GET/POST /api/apikeys、PATCH/DELETE /api/apikeys/{id})。新增前端frontend/src/views/ApiKeys.vue与/api-keys路由、侧栏入口。 - scope 权限模型:业务能力
scan/download/upload/tools/tasks,高危能力settings/system/logs/cache/apikeys(需显式授权)。每个路由用deps.require_scope(...)声明所需 scope;session 登录的浏览器始终是全权限管理员,不受 scope 约束。system路由按端点拆logs/cache/system三个 scope。 - SSE/EventSource 兜底:EventSource 不能自定义请求头,第三方用
?api_key=<plaintext>查询参数访问/api/tasks/{tid}/events。 - CORS 白名单:新增配置
api_cors_allowed_origins(envNFM_API_CORS_ALLOWED_ORIGINS,逗号分隔),默认空(不开放跨域)。非空时启用CORSMiddleware,仅允许白名单 origin,不允许*搭配凭据。 - 预置 key:env
NFM_BOOTSTRAP_API_KEY可在首启时以 hash 落盘一条全权限 key,便于部署/CI 注入;重复启动不重复创建。
调整
backend/app/deps.py由「单一 session 校验」重写为双通道:session 优先,否则校验 Bearer/query key;未认证 401、缺 scope 403、限流超限 429、禁用/过期/伪造 key 一律 401。backend/app/config.py新增api_keys/api_cors_allowed_origins默认值;public_dict剔除api_keys(避免 hash 经/api/settings泄露)。scan/download/upload/tools/tasks/settings路由由require_auth改为require_scope(...);system路由改为按端点声明 scope。
