> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-TW/llms.txt # MastraAuthBetterAuth 類別 `MastraAuthBetterAuth` 類別使用 Better Auth 為 Mastra 應用程式提供身分驗證。它會使用 Better Auth session 驗證傳入要求,並透過 `auth` 選項與 Mastra 伺服器整合。 ## 使用範例 ```typescript import { Mastra } from '@mastra/core' import { MastraAuthBetterAuth } from '@mastra/auth-better-auth' import { betterAuth } from 'better-auth' // Create your Better Auth instance const auth = betterAuth({ database: { provider: 'postgresql', url: process.env.DATABASE_URL, }, emailAndPassword: { enabled: true, }, baseURL: process.env.BETTER_AUTH_URL, secret: process.env.BETTER_AUTH_SECRET, }) export const mastra = new Mastra({ server: { auth: new MastraAuthBetterAuth({ auth, }), }, }) ``` ## 建構函式參數 **auth** (`Auth`): 透過 betterAuth({ ... }) 建立的 Better Auth 執行個體。此為必要參數,且必須使用支援的資料庫 Provider 正確設定。 **name** (`string`): 身分驗證 Provider 執行個體的自訂名稱。 (Default: `'better-auth'`) **authorizeUser** (`(user: BetterAuthUser, request: HonoRequest) => Promise | boolean`): 自訂授權函式,用於判斷是否應授予使用者存取權。此函式會在 session 驗證後呼叫。預設允許所有具有有效 session 且已通過身分驗證的使用者。 **public** (`Array`): 不需要身分驗證的公開路由。支援完全相符的路徑、萬用字元和路徑參數。 **protected** (`Array`): 需要身分驗證的受保護路由。支援完全相符的路徑、萬用字元和路徑參數。 ## `BetterAuthUser` 型別 `BetterAuthUser` 型別包含 Better Auth 傳回的 session 與使用者資訊: ```typescript interface BetterAuthUser { session: Session user: User } ``` - `session`:包含 session 中繼資料的 Better Auth session 物件 - `user`:包含使用者詳細資料且已通過身分驗證的使用者物件 `Session` 和 `User` 型別由 Better Auth 套件匯出。 ## 比對規則 - `public` 和 `protected` 接受完全相符的路徑、萬用字元模式(例如 `/api/*`),以及路徑參數(例如 `/users/:id`)。 - 若要設定特定 method 的規則,請使用 `["/api/agents", ["GET", "POST"]]` 之類的 tuple。 - 如果路由同時符合 `public` 和 `protected`,會以 `public` 為優先,且不需要身分驗證。 - 如果兩者皆不符合,路由預設會視為受保護路由(除非路由明確標示為 `requiresAuth: false`)。 ## 相關內容 [MastraAuthBetterAuth 類別](https://mastra.zisheng.pro/zh-TW/docs/server/auth/better-auth)