Better Auth | TypeScript 最全面的认证框架
Better Auth 是一款 TypeScript 原生的认证框架,框架无关、插件驱动,内置邮箱密码、社交 OAuth、2FA、Passkey、多租户等 30+ 认证能力,MIT 开源,GitHub 29K Star,npm 月下载量 1900 万。
Better Auth — 官网首页。
Better Auth 是一款 TypeScript 原生的认证与授权框架,由社区驱动的开源项目(MIT 协议),GitHub 获 29K+ Star、890+ 贡献者,npm 月下载量超过 1900 万次。它的核心定位是「框架无关」——不绑定特定前端框架或 ORM,可无缝接入 Next.js、Nuxt、SvelteKit、Hono、Elysia 等生态。
什么场景需要它
TypeScript 生态中的认证方案长期处于「半解决」状态。Auth.js(原 NextAuth)需要较多胶水代码做自定义;Lucia v3 已转型为架构指南而非可依赖的库;Clerk 等功能完善但依赖 SaaS 服务,数据归厂商管。Better Auth 希望填补这个空白——既有开箱即用的功能密度,又保持数据自托管。
核心能力
开箱即用的认证方式
| 认证方式 | 支持情况 |
|---|---|
| 邮箱密码 | ✅ 内置,含 Argon2 密码哈希 |
| 社交 OAuth | ✅ Google、GitHub、Apple 等 20+ 提供商 |
| Magic Link | ✅ 免密登录 |
| 手机验证码 | ✅ |
| Passkey | ✅ WebAuthn 标准 |
| 两步验证(2FA) | ✅ TOTP,可选强制策略 |
| 单点登录(SSO) | ✅ SAML/OIDC,Enterprise 插件 |
高级功能(插件生态)
Better Auth 采用插件架构,核心只提供基础能力,进阶功能通过官方和社区插件按需加载:
- 多租户组织 — Organization 插件,含角色管理、成员邀请、权限控制
- 多会话管理 — 多设备独立会话,强制踢出
- API Keys — 服务端 API Key 鉴权
- 用户名 — 非邮箱的用户名登录
- 邮件模板 — 自定义认证邮件模板
- OAuth 2.0 服务端 — 把自己打造成 OAuth 服务端(IDP)
- 管理员后台 — 用户管理仪表盘
- Last Login Method — 记录最近登录方式
- MCP 集成 — AI 工具可调用 Auth 数据查询
数据库与 ORM 支持
| ORM | 支持 |
|---|---|
| Prisma | ✅ 官方适配 |
| Drizzle | ✅ 官方适配 |
| Mongoose | ✅ 官方适配 |
| Kysely | ✅ 社区适配 |
| 自定义 SQL | ✅ 可通过 adapter 扩展 |
为什么值得关注
Better Auth 在 2025-2026 年成为 TypeScript 认证领域增长最快的开源项目,主要有几个原因:
- Lucia v3 的退出 — 2025 年 Lucia 官方宣布 v3 不再作为可依赖的认证库,大量用户迁移到 Better Auth
- Auth.js 的复杂度 — Auth.js v5 在灵活性和易用性之间摇摆,Better Auth 的 API 设计更符合直觉
- 插件架构而非全栈 SaaS — 核心免费开源,按需装插件,不锁定厂商
- TypeScript 优先 — 完整的类型推导,开发体验接近零摩擦
社区评价中常拿「Clerk 的反面」来形容 Better Auth——如果你不想把用户数据交给第三方,又不想自己从零造轮子,Better Auth 是目前最完整的选择。
定价模型
Better Auth 本身是 MIT 协议的开源项目,核心认证能力免费。项目方同时提供两个付费方向:
| 方案 | 费用 | 涵盖 |
|---|---|---|
| 开源版 | 免费 | 核心认证 + 所有基础插件,自部署 |
| Better Auth Cloud | $49/月起 | 仪表盘、审计日志、安全检测、邮件服务、异常检测 |
| Enterprise | 定制 | SSO/SAML、SCIM、自定义 IDP、专属支持 |
Cloud 层是可选的——你可以永远不碰它,纯用开源版跑业务。
适合谁
- TypeScript 全栈开发者:想用一个库解决所有认证需求,不想拼凑多个方案
- 从 NextAuth/Auth.js 迁移的团队:想降低自定义认证逻辑的技术债
- 数据主权敏感的 SaaS:需要认证功能完整,但不愿把用户数据交给第三方
- 多产品线团队:框架无关的设计让同一套认证逻辑跨 Next.js、Nuxt、Hono 复用
不太适合
- 完全不想碰代码:Better Auth 不是 SaaS——需要写代码集成。如果你想要零代码拖拽式认证,Clerk 更合适
- 纯后端 API 项目:如果你只要 JWT 签发不做前端认证流程,jsonwebtoken + passport 更轻量
- 对开源协议敏感的大型企业:MIT 协议无限制,但如果你需要 SLA 级别的商业支持,需购买 Enterprise 方案
快速开始
npm install better-auth
import { betterAuth } from "better-auth";
export const auth = betterAuth({
emailAndPassword: { enabled: true },
socialProviders: {
google: { clientId: "...", clientSecret: "..." },
},
});