跳到主要内容

MastraAuthBetterAuth 类

MastraAuthBetterAuth 类使用 Better Auth 为 Mastra 应用提供身份验证。它通过 Better Auth Session 验证传入请求,并使用 auth 选项与 Mastra server 集成。

使用示例
使用示例的直接链接

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[]]>
无需身份验证的公共 Route。支持精确路径、通配符和路径参数。

protected?:

Array<string | RegExp | [string, Methods | Methods[]]>
需要身份验证的受保护 Route。支持精确路径、通配符和路径参数。

BetterAuthUser 类型
betterauthuser-type的直接链接

BetterAuthUser 类型包含 Better Auth 返回的 Session 和用户信息:

interface BetterAuthUser {
session: Session
user: User
}
  • session:包含 Session metadata 的 Better Auth Session 对象
  • user:包含用户详细信息的已验证用户对象

SessionUser 类型由 Better Auth package 导出。

匹配规则
匹配规则的直接链接

  • publicprotected 接受精确路径、通配符模式(如 /api/*)和路径参数(如 /users/:id)。
  • 对于特定于方法的规则,请使用 ["/api/agents", ["GET", "POST"]] 这样的 tuple。
  • 如果 Route 同时匹配 publicprotected,则以 public 为准,无需身份验证。
  • 如果两者都不匹配,Route 默认视为受保护(除非 Route 明确标记为 requiresAuth: false)。

MastraAuthBetterAuth 类