返回项目目录
开发工具精选项目

Better Auth

框架无关、类型安全的 TypeScript 认证与授权框架,提供数据库适配器、客户端 SDK 和丰富插件。

主要语言TypeScript
开源许可MIT
项目类型开发工具
维护状态活跃维护
OVERVIEW

项目概述

Better Auth 提供邮箱密码、社交登录、Session、数据库 Schema 与安全防护,并通过 50 多个插件扩展 Passkey、双因素认证、Magic Link、组织、SSO、API Key 等能力。它可集成主流 Web 框架、Serverless 平台和移动端应用。

Better Auth 是面向 TypeScript 的通用认证与授权框架。服务端核心使用标准 Request/Response 模型,可挂载到 Next.js、Nuxt、SvelteKit、SolidStart、Hono、Cloudflare Workers、Express、Elysia 等框架;客户端提供 React、Vue、Svelte、Solid 和 Vanilla JavaScript SDK,也支持 Expo。核心内置邮箱密码、社交登录、Session、数据库 Schema、CSRF/Origin 校验和生产环境速率限制,并通过 50 多个插件扩展 Passkey、双因素认证、Magic Link、组织、管理员、SSO、SCIM、API Key、JWT 与 OAuth/OIDC Provider。数据库可使用内置 Kysely 层,或接入 Drizzle、Prisma、MongoDB 等适配器;也可以在功能受限的场景使用无数据库 Session。当前稳定版为 1.6.25,项目采用 MIT 许可证。

稳定版本1.6.25
插件生态50+
许可证MIT
FEATURES

主要特点

Better Auth 把服务端认证、客户端状态、数据存储、安全默认值和高级身份能力组合成可选、类型安全的模块。

01

框架无关的服务端核心

基于标准 Request 和 Response 工作,可挂载到 Next.js、Nuxt、SvelteKit、SolidStart、Hono、Workers、Express、Elysia 等环境。

02

邮箱密码认证

内置注册、登录、密码 Hash、邮箱验证、重置密码和 Session 创建流程,可接入自己的邮件发送函数。

03

社交登录 Provider

提供 GitHub、Google、Apple、Microsoft、Discord 等常见 OAuth Provider,并允许通过 Generic OAuth 扩展。

04

类型安全客户端

React、Vue、Svelte、Solid 与 Vanilla Client 提供登录、注册、登出和 Session Hook,并从服务端配置推导插件扩展类型。

05

数据库与无状态 Session

默认可将用户、账户和 Session 存入数据库,也能在不配置数据库时使用签名或加密 Cookie 的 Stateless 模式。

06

多种数据库适配器

支持内置 Kysely 数据层以及 Drizzle、Prisma、MongoDB 和社区 Adapter,覆盖 PostgreSQL、MySQL、SQLite、D1 等存储。

07

Session 与二级存储

可以使用数据库 Session、Cookie Cache 或 Redis 等 Secondary Storage,并配置过期、刷新、保留和撤销策略。

08

50+ 插件

按需添加 Passkey、Two-Factor、Magic Link、Email OTP、Phone、Username、Anonymous、Multi Session、SIWE 等认证方式。

09

组织与授权插件

Organization、Admin、SSO、SCIM 和 Access Control 插件提供团队、成员、角色、企业身份和用户管理基础能力。

10

API 与 Token 能力

通过 API Key、JWT、Bearer、One-Time Token、OAuth 2.1 Provider 和 OIDC Provider 支持服务间与第三方接入。

11

CLI 与 Schema 生成

`auth` CLI 可以初始化项目、生成 Secret、诊断配置,并为 Kysely、Drizzle 或 Prisma 生成所需数据库 Schema。

12

类型推导与字段扩展

User、Session 及插件字段可在服务端和客户端通过 `$Infer` 推导,也可以安全扩展业务字段并控制可写性。

13

数据库 Hook

可在用户、Session、Account 等记录创建或更新前后执行校验、审计和业务同步逻辑。

14

默认安全防护

包含 Origin/Trusted Origins 校验、Fetch Metadata、SameSite/HttpOnly Cookie、OAuth state/nonce 和生产环境速率限制。

15

可优化的最小入口

使用外部 ORM Adapter 时可从 `better-auth/minimal` 导入,减少不需要的内置数据库代码和 Bundle 体积。

USE CASES

适用场景

它适合希望自托管用户与 Session 数据,同时需要跨框架、跨数据库和渐进式身份功能的 TypeScript 团队。

现代全栈 Web 应用

在 Next.js、Nuxt、SvelteKit、SolidStart 或 TanStack Start 中统一处理路由、Cookie、Session 和客户端状态。

Hono 与 Edge API

在 Cloudflare Workers、Bun、Deno 或 Node.js 上挂载认证 Handler,并搭配 D1、PostgreSQL 或 Serverless 数据库。

SaaS 与多租户产品

通过 Organization、Admin、SSO、SCIM 和 API Key 插件建立团队、成员、角色与企业身份基础设施。

渐进增强登录体系

先启用邮箱密码或社交登录,再按需要增加邮箱验证、Magic Link、Passkey、Two-Factor 和账户关联。

自托管用户数据

用户、Session、Account 与 Verification 数据保存在自己的数据库中,便于审计、数据驻留和自定义业务关联。

移动端与 Expo

在 Expo 应用中处理 Cookie、SecureStore 和 Deep Link,并与同一 Better Auth 服务端共享认证体系。

内部工具与管理后台

使用管理员、角色、访问控制和用户封禁能力保护内部页面与高权限操作。

服务与第三方集成

通过 API Key、JWT、Bearer 或 OAuth/OIDC Provider 为 API 客户端、MCP 工具和合作伙伴提供身份能力。

EVALUATION

优点与注意事项

技术选型不仅要看能力,也要理解它带来的团队成本。

主要优点

Better Auth 擅长的地方

  • 开源且可自托管,用户、凭据关联和 Session 数据可保留在自己的数据库中。
  • 服务端使用标准 Web API,能跨多个 TypeScript 框架与运行时复用核心配置。
  • 服务端和客户端类型相互推导,插件新增的字段与方法也能进入类型系统。
  • 邮箱密码、社交登录和 Session 开箱即用,高级能力通过插件渐进添加。
  • Drizzle、Prisma、Kysely、MongoDB 等数据层选择灵活,适合现有项目接入。
  • 组织、SSO、SCIM、Passkey、2FA 和 API Key 等能力覆盖常见 SaaS 演进路径。
  • 默认提供 CSRF、Origin、Cookie、OAuth state/nonce 与限流防护,减少基础配置遗漏。
  • CLI 能生成 Schema、Secret 和诊断信息,降低跨框架配置成本。
  • MIT 许可宽松,适合个人、商业产品和企业内部平台。

需要注意

采用前应考虑的问题

认证安全责任仍属于应用团队

使用框架不能替代威胁建模、安全审计、依赖升级、日志监控、密钥管理和事故响应。

Secret 与 URL 必须正确配置

`BETTER_AUTH_SECRET` 至少需要 32 字符高熵值;生产 Base URL、回调 URL 和 HTTPS 配置错误会导致 Cookie、OAuth 或重定向问题。

Trusted Origins 不能过度放宽

只允许真实前端 Origin,不应在生产保留 localhost 或不必要的通配符,也不要关闭 CSRF 检查来绕过配置问题。

代理 IP Header 需要可信边界

限流依赖客户端 IP。反向代理必须覆盖或清理转发 Header,并配置可信代理或单一可信 Header,避免伪造。

Serverless 不能依赖内存限流

默认内存状态在多实例和冷启动环境中不共享,应使用数据库、Secondary Storage 或自定义存储保存限流计数。

数据库 Adapter 的迁移方式不同

内置 Kysely Adapter 可由 CLI 直接 migrate;Drizzle 或 Prisma 应先 generate Schema,再交由各自迁移工具审查和执行。

启用插件通常需要 Schema 变更

Passkey、Organization、Two-Factor 等插件会增加表或字段,服务端与客户端插件也要配对并纳入迁移流程。

邮箱流程需要可靠基础设施

验证邮箱、重置密码、Magic Link 和 OTP 依赖邮件服务、模板、防枚举策略、重试、退信与发送监控。

OAuth Provider 配置容易出现环境差异

开发、预览、生产域名的 Redirect URI、Client Secret 和 Scope 必须分别核对,避免开放重定向或权限过宽。

无状态模式存在能力边界

多数插件仍需数据库;Cookie 容量、账户 Token、即时撤销和多设备管理也可能使纯 Stateless 模式不适合复杂生产系统。

跨域 Cookie 受浏览器策略影响

前后端跨站部署可能被 Safari ITP 或第三方 Cookie 策略阻断,优先使用同站域名或官方代理模式,并测试主流浏览器。

Session Cache 与撤销需要权衡

Cookie Cache 能减少数据库查询,但缓存有效期内可能延迟封禁、权限变化或 Session 撤销的生效。

插件不等于完整业务授权

Organization 和 Access Control 提供基础原语,资源归属、租户隔离、行级权限与高风险操作仍需业务层强制校验。

完整入口可能增加 Bundle

在 Edge 或使用 Drizzle、Prisma Adapter 时应评估 `better-auth/minimal`,并避免导入不需要的 Provider 与插件。

项目迭代速度很快

当前 1.6.x 发布和插件演进频繁,应固定精确版本、阅读 Changelog,并对登录、迁移和 Session 行为执行回归测试。

QUICK START

快速开始

下面以 Next.js、React 和 Drizzle Adapter 为例,完成密钥、服务端实例、数据库 Schema、路由和客户端登录。

1安装 Better Auth
bash
npm install better-auth

# 如果使用 Drizzle Adapter
npm install drizzle-orm
npm install --save-dev drizzle-kit
2配置高熵 Secret 与站点 URL
bash
npx auth@latest secret

# .env
BETTER_AUTH_SECRET="replace-with-at-least-32-random-characters"
BETTER_AUTH_URL="http://localhost:3000"
GITHUB_CLIENT_ID="..."
GITHUB_CLIENT_SECRET="..."
3创建服务端认证实例
typescript
import { betterAuth } from "better-auth/minimal";
import { drizzleAdapter } from "better-auth/adapters/drizzle";
import { twoFactor } from "better-auth/plugins";
import { db } from "@/db";

export const auth = betterAuth({
  database: drizzleAdapter(db, {
    provider: "pg",
  }),
  emailAndPassword: {
    enabled: true,
  },
  socialProviders: {
    github: {
      clientId: process.env.GITHUB_CLIENT_ID!,
      clientSecret: process.env.GITHUB_CLIENT_SECRET!,
    },
  },
  trustedOrigins: ["http://localhost:3000"],
  plugins: [twoFactor()],
});
4生成 Drizzle Schema 并迁移
bash
npx auth@latest generate

# 检查生成的 Drizzle Schema 和 SQL
npx drizzle-kit generate
npx drizzle-kit check
npx drizzle-kit migrate
5挂载 Next.js Route Handler
typescript
// app/api/auth/[...all]/route.ts
import { auth } from "@/lib/auth";
import { toNextJsHandler } from "better-auth/next-js";

export const { GET, POST } = toNextJsHandler(auth);
6创建 React 客户端
typescript
// lib/auth-client.ts
import { createAuthClient } from "better-auth/react";
import { twoFactorClient } from "better-auth/client/plugins";

export const authClient = createAuthClient({
  plugins: [twoFactorClient()],
});

export const {
  signIn,
  signOut,
  signUp,
  useSession,
} = authClient;
7实现邮箱登录组件
tsx
"use client";

import { useState } from "react";
import { signIn } from "@/lib/auth-client";

export function SignInForm() {
  const [error, setError] = useState("");

  async function submit(formData: FormData) {
    const result = await signIn.email({
      email: String(formData.get("email")),
      password: String(formData.get("password")),
    });

    setError(result.error?.message ?? "");
  }

  return (
    <form action={submit}>
      <input name="email" type="email" autoComplete="email" required />
      <input
        name="password"
        type="password"
        autoComplete="current-password"
        required
      />
      <button type="submit">登录</button>
      {error && <p role="alert">{error}</p>}
    </form>
  );
}
8执行上线前检查
bash
npm run lint
npm run typecheck
npm run test
npm run build

# 验证邮箱、OAuth 回调、CSRF、限流、Session 撤销和数据库迁移

下一步:认证属于高风险基础设施。上线前必须固定版本、使用高熵 Secret、设置准确的 Base URL 与 Trusted Origins,并演练邮件、OAuth 回调、Session 撤销、迁移、限流和代理 IP 配置。

ALTERNATIVES

类似项目

这些项目覆盖 Better Auth 官方支持的全栈框架、服务端运行时、Serverless 平台和 Drizzle 数据层;外部项目代表不同层次的自托管认证方案。

Next.js

基于 React 的全栈 Web 框架,覆盖渲染、路由和部署。

查看项目

Nuxt

基于 Vue 的全栈 Web 框架,统一路由、服务端渲染、数据获取与后端 API。

查看项目

SvelteKit

Svelte 官方应用框架,提供文件路由、服务端渲染、数据加载和渐进增强表单。

查看项目

SolidStart

SolidJS 官方全栈框架,提供文件路由、Server Functions、流式 SSR 与多平台部署。

查看项目

Hono

基于 Web 标准、轻量快速且可运行于多种 JavaScript 环境的 Web 框架。

查看项目

Express

灵活、极简且拥有庞大生态的 Node.js Web 应用框架。

查看项目

Elysia

为 Bun 深度优化、强调端到端类型安全与优秀开发体验的 TypeScript 后端框架。

查看项目

Cloudflare Workers

在 Cloudflare 全球网络上构建、部署和扩展应用的 Serverless 计算平台。

查看项目

Expo

基于 React Native 的通用应用框架与工具平台,覆盖 Android、iOS 和 Web。

查看项目

Drizzle ORM

轻量、类型安全且贴近 SQL 的 TypeScript ORM,原生连接主流数据库驱动,并配套迁移工具。

查看项目

Node.js

基于 V8、用于服务器、命令行工具和网络应用的跨平台 JavaScript 运行时。

查看项目

Auth.js

开源、Web 标准优先的认证库,拥有大量 OAuth Provider 和数据库 Adapter,并支持多个现代框架。

访问官网

Ory Kratos

语言无关的自托管身份与用户管理服务,适合独立身份基础设施和多应用架构。

访问官网

SuperTokens

提供开源 Auth Core、后端 SDK 和预制登录界面的自托管认证方案。

访问官网
COMPARISON

Better Auth vs Auth.js

Better Auth 与 Auth.js 都是 MIT 许可、可自托管的 TypeScript 认证方案,也都支持 OAuth Provider 和数据库 Adapter。Better Auth 更强调完整认证与授权框架、类型化客户端及插件生态;Auth.js 更强调 Web 标准、Provider/Adapter 体系和较聚焦的认证核心。

比较维度Better AuthAuth.js
核心定位通用认证与授权框架Web 标准优先的认证库
基础认证内置邮箱密码与社交登录OAuth、Magic Link、WebAuthn 与 Credentials Provider 等方案
框架集成Next.js、Nuxt、SvelteKit、SolidStart、Hono、Express 等Next.js、SvelteKit、Express、Qwik、SolidStart 等
客户端 SDKReact、Vue、Svelte、Solid 与 Vanilla 类型化 Client按框架提供 Session 与登录集成,核心更偏服务端
数据库Kysely 内置层,以及 Drizzle、Prisma、Mongo Adapter广泛的官方与社区 Adapter 生态
Session数据库、Secondary Storage、Cookie Cache 或 StatelessJWT 或数据库 Session 策略
高级功能50+ 插件覆盖 2FA、Passkey、Organization、SSO、SCIM、API Key主要通过 Provider、Adapter、Callback 和应用代码组合
授权能力提供 Organization、Admin 与 Access Control 插件通常由应用业务层或外部授权系统实现
Schema 工具CLI 可生成 Kysely、Drizzle、Prisma Schema数据库表由 Adapter 与 ORM 迁移流程管理
抽象取舍功能面广、配置与插件联动更多认证核心较聚焦,复杂产品能力需要自行组合
生态历史发展快速、版本与插件迭代频繁NextAuth.js 演进而来,采用历史与 Provider 生态更长
更适合希望一套框架逐步扩展到 SaaS 身份能力重视成熟 OAuth 生态和精简认证核心的团队
如何选择

如果产品预计需要邮箱密码、Passkey、2FA、组织、SSO、SCIM、API Key 等渐进式能力,并希望客户端与服务端保持完整类型推导,优先评估 Better Auth;如果主要需求是成熟的 OAuth Provider、Session 和数据库 Adapter,并希望认证核心保持聚焦,Auth.js 仍是可靠选择。两者上线前都应进行独立安全评审。

VERIFICATION

资料核验

版本、维护信息与本页采用的官方资料来源。

最后核验2026 年 7 月 29 日
核验版本Better Auth 1.6.25
内容维护Better Auth / better-auth
项目维护状态活跃维护

npm 官方元数据核验的稳定版为 1.6.25,许可证为 MIT。官方文档当前列出 50+ 插件,并提供主流框架、客户端和数据库 Adapter。GitHub 官方仓库未归档,最近可见提交日期为 2026 年 7 月 29 日。

维护状态核验2026 年 7 月 26 日 · 最近可见代码活动:2026 年 7 月 29 日

官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 29 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。

查看官方仓库