用途:为 TypeScript/Cloudflare Workers 应用构建自托管认证系统,覆盖社交登录、双因素认证、Passkey、组织与基于角色的权限控制(RBAC),是自托管替代方案。
主要能力:调用 auth.handler() 后自动在 /api/auth/* 暴露 80+ REST 端点,同时提供 auth.api.* 服务端方法。核心端点含邮箱密码注册登录、会话管理、改密、找回密码、邮箱验证、账号关联与解绑。插件扩展 2FA(TOTP、邮箱 OTP、备份码)、组织(成员、邀请、团队、角色权限)、Admin(用户管理、封禁、模拟登录)、Passkey、Magic Link、用户名、手机号、邮箱 OTP、匿名、JWT、OpenAPI 等。v1.4.0 新增无状态会话、JWT 密钥轮换、SCIM、CaptchaFox、服务端 IP 检测、多 Passkey 源、OIDC RP-Initiated Logout;v1.3 新增 SAML 2.0 SSO 与多团队支持。
使用方式:安装 better-auth@1.4.0。D1 无直接适配器,必须用 Drizzle(drizzleAdapter(db, { provider: "sqlite" }))或 Kysely(new Kysely({ dialect: new D1Dialect({ database: env.DB }) }))。TanStack Start 需 reactStartCookies 插件且必须放在插件数组最后,API 路由为 /src/routes/api/auth/$.ts。客户端用 authClient 调 HTTP 端点,服务端中间件与后台任务用 auth.api.*。
适用场景:Cloudflare Workers 上的多租户 SaaS、需要企业 SSO 与组织权限的应用、React Native/Expo 移动端。
限制:v1.4.0 为 ESM-only,不再支持 CommonJS;v1.3 起 teamId 从 member 表移除,需新建 teamMembers 表;D1 必须经 Drizzle/Kysely,无 d1Adapter();使用 snake_case 的 Drizzle schema 时 Kysely 需加 CamelCasePlugin。具体收费与价格资料未提供。