From db674dd6cc66ab2e1a978c6e52b3638f801a525f Mon Sep 17 00:00:00 2001 From: alex Date: Sat, 5 Sep 2026 09:09:27 +0800 Subject: [PATCH] =?UTF-8?q?feat(backend):=20=E5=8F=97=E4=BF=9D=E8=AD=B7?= =?UTF-8?q?=E7=AB=AF=E9=BB=9E=E6=94=AF=E6=8F=B4=20Bearer=20access=20token?= =?UTF-8?q?=EF=BC=88issue=20#16=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - AccessToken 加 accountId 歸屬(nullable FK,ON DELETE CASCADE): migration 1788569900000(冪等寫法,兼容 synchronize 已建表的開發庫 與全新資料庫);POST /access-tokens 接受選填 accountId(不存在回 400) - 新增複合式 AuthGuard(backend/src/auth/auth.guard.ts):有 Authorization: Bearer 時驗 access token(需有效且綁定帳號,還原成 req.account),否則 fallback SessionGuard(session cookie),套用到 novels 授權端點與 GET /auth/me - 修復 session 驗證實際上無法運作的兩個缺口:main.ts 補掛 cookie-parser(req.cookies 原為 undefined);AppModule 補 import AuthModule/NovelsModule(/auth、/novels 路由原未註冊) - cli/README.md 授權缺口說明改為已補齊(M3 待補 CLI 命令) 驗證:nest build 通過;本地 PostgreSQL + migration:run + 端到端測試 (綁帶號 token 200/未綁 401/撤銷後 401/過期 401/壞 Bearer 優先於 好 cookie 401/session cookie fallback 200/CLI auth status、novels get、tokens verify、tokens create 皆正常)。 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d0ec0e9..5a2fc21 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ | `fox novels create --title <書名> [--slug ] [--synopsis <簡介>]` | `POST /novels` | 建立作品(需授權,見下) | | `fox novels update [--title ...] [--slug ...] [--synopsis ...]` | `PATCH /novels/:slug` | 更新作品(需授權,見下) | -> **授權缺口(待後端跟進)**:目前 `novels` 的授權端點只吃瀏覽器 session(Bear SSO cookie),尚未接受 Bearer access token;access token 也暫無 `accountId` 歸屬(見 `backend/src/access-token` 註解)。CLI 第一步先支援公開端點與 `access-tokens` 系列;待後端讓 `AccessTokenGuard` 套用到 `novels`(並為 token 加帳號歸屬)後,再補齊 `novels` 的授權命令。 +> **授權(issue #16 已補齊)**:受保護端點(`novels list/create/update`、`auth me`)的 `AuthGuard` 現在同時接受 `Authorization: Bearer ` 與瀏覽器 session(cookie);Bearer 優先。access token 需綁定帳號(`POST /access-tokens` 帶 `accountId`,或由管理員建立時指定),未綁帳號的系統 token 只能用於 `tokens verify`。CLI 待 M3 補齊 `novels list/create/update` 命令。 ## 四、AI agent 使用指引