跳到主要内容

MastraAuthFirebase 类

MastraAuthFirebase 类使用 Firebase Authentication 为 Mastra 提供身份验证。它通过 Firebase ID token 验证传入请求,并使用 auth 选项与 Mastra server 集成。

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

使用环境变量的基本用法
使用环境变量的基本用法的直接链接

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { MastraAuthFirebase } from '@mastra/auth-firebase'

// Automatically uses FIREBASE_SERVICE_ACCOUNT and FIRESTORE_DATABASE_ID env vars
export const mastra = new Mastra({
server: {
auth: new MastraAuthFirebase(),
},
})

自定义配置
自定义配置的直接链接

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { MastraAuthFirebase } from '@mastra/auth-firebase'

export const mastra = new Mastra({
server: {
auth: new MastraAuthFirebase({
serviceAccount: '/path/to/service-account-key.json',
databaseId: 'your-database-id',
}),
},
})

构造函数参数
构造函数参数的直接链接

serviceAccount?:

string
= process.env.FIREBASE_SERVICE_ACCOUNT
Firebase 服务账号 JSON 文件的路径。该文件包含在服务端验证 Firebase ID token 所需的凭据。

databaseId?:

string
= process.env.FIRESTORE_DATABASE_ID || process.env.FIREBASE_DATABASE_ID
要使用的 Firestore 数据库 ID。默认数据库通常为 '(default)'。

name?:

string
= "firebase"
身份验证 Provider 实例的自定义名称。

authorizeUser?:

(user: FirebaseUser) => Promise<boolean> | boolean
用于确定是否应授予用户访问权限的自定义授权函数。在 token 验证后调用。默认检查 'user_access' collection 中是否存在以用户 UID 为键的文档。

环境变量
环境变量的直接链接

未提供构造函数选项时,会自动使用以下环境变量:

FIREBASE_SERVICE_ACCOUNT?:

string
Firebase 服务账号 JSON 文件的路径。未提供 serviceAccount 选项时使用。

FIRESTORE_DATABASE_ID?:

string
Firestore 数据库 ID。数据库配置的主要环境变量。

FIREBASE_DATABASE_ID?:

string
Firestore 数据库 ID 的备用环境变量。未设置 FIRESTORE_DATABASE_ID 时使用。

默认授权行为
默认授权行为的直接链接

默认情况下,MastraAuthFirebase 使用 Firestore 管理用户访问权限:

  1. 成功验证 Firebase ID token 后,调用 authorizeUser 方法
  2. 检查 user_access collection 中是否存在以用户 UID 作为文档 ID 的文档
  3. 如果文档存在,则用户获得授权;否则拒绝访问
  4. 使用的 Firestore 数据库由 databaseId 参数或环境变量决定

Firebase 用户类型
Firebase 用户类型的直接链接

authorizeUser 函数使用的 FirebaseUser 类型对应 Firebase 的 DecodedIdToken interface,其中包括:

  • uid:用户的唯一标识符
  • email:用户的电子邮件地址(如果可用)
  • email_verified:电子邮件是否已验证
  • name:用户的显示名称(如果可用)
  • picture:用户头像的 URL(如果可用)
  • auth_time:用户通过身份验证的时间
  • 其他标准 JWT claim

MastraAuthFirebase 类