mcpField
B
better-auth

better-auth

github.com/samhvw8安全1156 次安装46 周前更新
代码仓库

关于 better-auth

此工作流 Skill 为 TypeScript 和 JavaScript 开发者提供 Better Auth 身份验证与授权配置指引,涵盖内置登录方式及可选插件,适用于不同框架。

主要功能

  1. 01Better Auth 配置指引
  2. 02邮箱密码与 OAuth 流程
  3. 032FA、通行密钥与魔法链接
  4. 04组织与会话配置
  5. 05交互式初始化脚本

适用场景

  1. 01为 TypeScript 应用添加身份验证
  2. 02配置社交登录或密码重置
  3. 03设置多租户组织支持

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/samhvw8/dot-claude --skill better-auth

安装后在 Claude Code 中输入/better-auth确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
advanced-features.md
database-integration.md
email-password-auth.md
oauth-providers.md
scripts/
.coverage
better_auth_init.py
requirements.txt
scripts/tests/
.coverage
test_better_auth_init.py

详细介绍

Better Auth 技能

Better Auth 是一个全面且与框架无关的 TypeScript 身份验证/授权框架,内置邮箱/密码、社交 OAuth,并拥有强大的插件生态系统,可支持高级功能。

适用场景

  • 在 TypeScript/JavaScript 应用中实现身份验证
  • 添加邮箱/密码或社交 OAuth 身份验证
  • 配置 2FA、通行密钥、魔法链接等高级身份验证功能
  • 构建支持组织功能的多租户应用
  • 管理会话和用户生命周期
  • 使用任何框架(Next.js、Nuxt、SvelteKit、Remix、Astro、Hono、Express 等)

快速开始

安装
npm install better-auth
# or pnpm/yarn/bun add better-auth
环境配置

创建 .env:

BETTER_AUTH_SECRET=<generated-secret-32-chars-min>
BETTER_AUTH_URL=http://localhost:3000
基本服务端配置

创建 auth.ts(位于根目录、lib/、utils/ 或 src/app/server/ 下):

import { betterAuth } from "better-auth";

export const auth = betterAuth({
  database: {
    // See references/database-integration.md
  },
  emailAndPassword: {
    enabled: true,
    autoSignIn: true
  },
  socialProviders: {
    github: {
      clientId: process.env.GITHUB_CLIENT_ID!,
      clientSecret: process.env.GITHUB_CLIENT_SECRET!,
    }
  }
});
数据库架构
npx @better-auth/cli generate  # Generate schema/migrations
npx @better-auth/cli migrate   # Apply migrations (Kysely only)
挂载 API 处理程序

Next.js App Router:

// app/api/auth/[...all]/route.ts
import { auth } from "@/lib/auth";
import { toNextJsHandler } from "better-auth/next-js";

export const { POST, GET } = toNextJsHandler(auth);

**其他框架:**请参阅 references/email-password-auth.md#framework-setup

客户端配置

创建 auth-client.ts:

import { createAuthClient } from "better-auth/client";

export const authClient = createAuthClient({
  baseURL: process.env.NEXT_PUBLIC_BETTER_AUTH_URL || "http://localhost:3000"
});
基本用法
// Sign up
await authClient.signUp.email({
  email: "[email protected]",
  password: "secure123",
  name: "John Doe"
});

// Sign in
await authClient.signIn.email({
  email: "[email protected]",
  password: "secure123"
});

// OAuth
await authClient.signIn.social({ provider: "github" });

// Session
const { data: session } = authClient.useSession(); // React/Vue/Svelte
const { data: session } = await authClient.getSession(); // Vanilla JS

功能选择矩阵

功能是否需要插件用例参考
邮箱/密码否(内置)基本身份验证email-password-auth.md
OAuth(GitHub、Google 等)否(内置)社交登录oauth-providers.md
邮箱验证否(内置)验证邮箱地址email-password-auth.md
密码重置否(内置)忘记密码流程email-password-auth.md
双重身份验证(2FA/TOTP)是(twoFactor)增强安全性advanced-features.md
通行密钥/WebAuthn是(passkey)无密码身份验证advanced-features.md
魔法链接是(magicLink)基于邮箱的登录advanced-features.md
用户名身份验证是(username)用户名登录email-password-auth.md
组织/多租户是(organization)团队/组织功能advanced-features.md
速率限制否(内置)防止滥用advanced-features.md
会话管理否(内置)用户会话advanced-features.md

身份验证方式选择指南

选择邮箱/密码的情况:

  • 构建使用传统身份验证的标准 Web 应用
  • 需要全面控制用户凭据
  • 面向偏好基于邮箱的账户的用户

选择 OAuth 的情况:

  • 希望用户快速注册且流程尽可能顺畅
  • 用户已有社交账户
  • 需要访问社交资料数据

选择通行密钥的情况:

  • 希望提供无密码体验
  • 面向使用现代浏览器/设备的用户
  • 安全性是首要任务

选择魔法链接的情况:

  • 希望实现无密码登录,且避免 WebAuthn 的复杂性
  • 面向以邮箱为主的用户
  • 需要临时访问链接

组合多种方式的情况:

  • 希望满足不同用户偏好的灵活性
  • 构建具有多种身份验证需求的企业应用
  • 需要渐进式增强(从简单方案开始,再添加更多选项)

核心架构

Better Auth 使用客户端-服务端架构:

  1. 服务端(better-auth):处理身份验证逻辑、数据库操作和 API 路由
  2. 客户端(better-auth/client):为前端提供钩子/方法
  3. 插件:扩展服务端和客户端的功能

实现检查清单

  • 安装 better-auth 软件包
  • 设置环境变量(SECRET、URL)
  • 使用数据库配置创建认证服务器实例
  • 运行架构迁移(npx @better-auth/cli generate)
  • 在框架中挂载 API 处理程序
  • 创建客户端实例
  • 实现注册/登录界面
  • 为组件添加会话管理
  • 设置受保护的路由/中间件
  • 按需添加插件(之后重新生成架构)
  • 测试完整的认证流程
  • 配置邮件发送(验证/重置)
  • 在生产环境中启用速率限制
  • 设置错误处理

参考文档

核心认证
高级功能
  • 高级功能 - 双因素认证/多因素认证、通行密钥、魔法链接、组织、速率限制、会话管理

脚本

  • scripts/better_auth_init.py - 通过交互式设置初始化 Better Auth 配置

资源

评论

支持 Markdown