TanStack Start 集成
此集成指南假设您正在使用 TanStack Start。
在开始之前,请确保您已配置 Better Auth 实例。如果您尚未这样做,请查看 installation。
挂载处理程序
我们需要将处理程序挂载到 TanStack API 端点/服务器路由。
创建一个新文件:/src/routes/api/auth/$.ts
import { auth } from '@/lib/auth' // import your auth instance
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({
//...your config
plugins: [reactStartCookies()] // make sure this is the last plugin in the array
})现在,当您调用设置 cookie 的函数时,它们将使用 TanStack Start 的 cookie 处理系统自动设置。
import { auth } from "@/lib/auth"
const signIn = async () => {
await auth.api.signInEmail({
body: {
email: "user@email.com",
password: "password",
}
})
}