Skip to content

Notion Files Management v2.0.0-Beta-4

新增

  • 第三方开放 API + API Key 鉴权:业务接口除原有 session cookie 外,新增 Authorization: Bearer nfm_... 双通道鉴权。API Key 支持命名、权限范围(scope)、可选过期、启停、删除、轻量限流(每分钟请求数)、最后使用记录;明文只创建时返回一次,落盘只存 sha256 hash。新增 backend/app/apikeys.pybackend/app/routers/apikeys.py(GET/POST /api/apikeysPATCH/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(env NFM_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。

Released under the MIT License.