跳至主要內容

MastraAuthBetterAuth 類別

MastraAuthBetterAuth 類別使用 Better Auth 為 Mastra 應用程式提供身分驗證。它會使用 Better Auth session 驗證傳入要求,並透過 auth 選項與 Mastra 伺服器整合。

使用範例
「使用範例」的直接連結

src/mastra/index.ts
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
= 'better-auth'
身分驗證 Provider 執行個體的自訂名稱。

authorizeUser?:

(user: BetterAuthUser, request: HonoRequest) => Promise<boolean> | boolean
自訂授權函式,用於判斷是否應授予使用者存取權。此函式會在 session 驗證後呼叫。預設允許所有具有有效 session 且已通過身分驗證的使用者。

public?:

Array<string | RegExp | [string, Methods | Methods[]]>
不需要身分驗證的公開路由。支援完全相符的路徑、萬用字元和路徑參數。

protected?:

Array<string | RegExp | [string, Methods | Methods[]]>
需要身分驗證的受保護路由。支援完全相符的路徑、萬用字元和路徑參數。

BetterAuthUser 型別
「betterauthuser-type」的直接連結

BetterAuthUser 型別包含 Better Auth 傳回的 session 與使用者資訊:

interface BetterAuthUser {
session: Session
user: User
}
  • session:包含 session 中繼資料的 Better Auth session 物件
  • user:包含使用者詳細資料且已通過身分驗證的使用者物件

SessionUser 型別由 Better Auth 套件匯出。

比對規則
「比對規則」的直接連結

  • publicprotected 接受完全相符的路徑、萬用字元模式(例如 /api/*),以及路徑參數(例如 /users/:id)。
  • 若要設定特定 method 的規則,請使用 ["/api/agents", ["GET", "POST"]] 之類的 tuple。
  • 如果路由同時符合 publicprotected,會以 public 為優先,且不需要身分驗證。
  • 如果兩者皆不符合,路由預設會視為受保護路由(除非路由明確標示為 requiresAuth: false)。

MastraAuthBetterAuth 類別