TanStack Start 集成
本集成指南假设您正在使用 TanStack Start。
在开始之前,请确保您已配置好 Better Auth 实例。如果尚未完成,请查看安装指南。
挂载处理器
我们需要将处理器挂载到 TanStack API 端点/服务器路由。
创建一个新文件:/src/routes/api/auth/$.ts
import { auth } from '@/lib/auth' // 导入您的 auth 实例
import { createServerFileRoute } from '@tanstack/react-start/server'
export const ServerRoute = createServerFileRoute('/api/auth/$').methods({
GET: ({ request }) => {
return auth.handler(request)
},
POST: ({ request }) => {
return auth.handler(request)
},
})
如果您尚未创建服务器路由处理器,可以通过创建以下文件来完成:/src/server.ts
import {
createStartHandler,
defaultStreamHandler,
} from '@tanstack/react-start/server'
import { createRouter } from './router'
export default createStartHandler({
createRouter,
})(defaultStreamHandler)
使用提示
- 我们推荐使用客户端 SDK 或
authClient
来处理身份验证,而不是使用auth.api
的服务器操作。 - 当你调用需要设置 cookie 的函数(如
signInEmail
或signUpEmail
)时,需要为 TanStack Start 处理 cookie 的设置。Better Auth 提供了一个reactStartCookies
插件来自动为你处理这一过程。
import { betterAuth } from "better-auth";
import { reactStartCookies } from "better-auth/react-start";
export const auth = betterAuth({
//...你的配置
plugins: [reactStartCookies()] // 确保这是数组中的最后一个插件
})
现在,当你调用设置 cookie 的函数时,它们将自动使用 TanStack Start 的 cookie 处理系统进行设置。
import { auth } from "@/lib/auth"
const signIn = async () => {
await auth.api.signInEmail({
body: {
email: "user@email.com",
password: "password",
}
})
}