用途:用于在 TanStack Start 项目中配置 Better Auth,并处理 Start 特有的接入与路由保护,面向 FMC 应用(如 TILDA、Trassenscout 迁移)。
适用时机:创建或修改 betterAuth() / createAuthClient() 配置;挂载 /api/auth/、使用 tanstackStartCookies() 插件与 OAuth 登录路由;编写 beforeLoad 门禁、endpointAuth、在服务端函数或 API 处理器中读取会话;区分公开与受保护的服务端函数(public.functions.ts 命名);自动化端点上的 API key 与会话双重鉴权。
主要规则:会话辅助函数始终接收当前请求的 Headers;路由 beforeLoad 不直接调用数据库/会话,而是通过服务端函数与 getRequestHeaders();tanstackStartCookies() 作为最后一个插件,并在 better-auth 版本变更后确认无客户端包泄漏;仅处理请求的 API 路由(如 /api/auth/$)设置 ssr: false;API 路由在每个 handler 内鉴权,不用路由级 beforeLoad;管理员/角色检查在启用 cookie 缓存时用 getSession({ query: { disableCookieCache: true } });API 密钥比较使用恒定时间相等。
双层结构:beforeLoad 仅负责路由体验,endpointAuth / guards 才是数据边界,不可只依赖 beforeLoad。不要用鉴权中间件做路由保护,全局鉴权中间件会破坏公开 RPC。
常用模式:beforeLoad 经服务端函数调用 routeSessionFn;API handler 用 endpointAuth.session(request.headers);服务端函数用 getRequestHeaders() 后调用 endpointAuth.admin(headers)。
搭建要点:auth.server.ts 中 betterAuth()(Prisma/Drizzle 适配器、插件);createAuthClient() 配置匹配的客户端插件;/api/auth/$ 调用 auth.handler(request);session.server.ts 辅助函数接收 Headers;插件变更后运行 CLI migrate/generate。
参考文件:references/auth.md(TanStack 路由、cookie、会话、TILDA 模式)、references/endpoint-auth-lint.md、references/better-auth-config.md;在线文档 better-auth.com/docs。相关技能:tanstack-router-conventions、tanstack-start-conventions、playwright-skill。
限制:具体费用、版本与价格资料暂未提供。