Skip to content
better-auth-best-practices logo

Better Auth 集成指南

better-auth-best-practices

集成 Better Auth(TypeScript 鉴权框架)时使用。支持邮箱密码、OAuth、魔法链接、Passkey 等,通过插件扩展。编写或配置 Better Auth 时触发。

SKILL.md

Full skill instructions

Better Auth 集成指南

代码示例与最新 API 请查阅 better-auth.com/​docs。

Better Auth 是 TypeScript 优先、框架无关的鉴权框架,通过插件支持邮箱/密码、OAuth、魔法链接、Passkey 等。


速查

环境变量

  • BETTER_AUTH_SECRET:加密密钥(至少 32 字符)。生成:openssl rand -base64 32
  • BETTER_AUTH_URL:根 URL(如 https://example.com)

仅当未设置环境变量时,在配置中定义 baseURL / secret。

配置文件位置

CLI 在 ./、./​lib、./​utils 或 ./​src 下查找 auth.ts。自定义路径用 --config。

CLI 命令

  • npx @better-auth/​cli@latest migrate — 应用 schema(内置 adapter)
  • npx @better-auth/​cli@latest generate — 为 Prisma/​Drizzle 生成 schema
  • npx @better-auth/​cli mcp --cursor — 为 AI 工具添加 MCP

新增或修改插件后需重新执行。


核心配置项

选项说明
appName可选显示名称
baseURL仅当未设置 BETTER_AUTH_URL 时
basePath默认 /​api/​auth,设为 / 可放在根路径
secret仅当未设置 BETTER_AUTH_SECRET 时
database多数功能必需,见 adapter 文档
secondaryStorageRedis/​KV,用于 session 与限流
emailAndPassword{ enabled: true } 启用
socialProviders{ google: { clientId, clientSecret }, ... }
plugins插件数组
trustedOriginsCSRF 白名单

数据库

直连:传入 pg.Pool、mysql2 池、better-sqlite3 或 bun:sqlite 实例。

ORM adapter:从 better-auth/​adapters/​drizzle、better-auth/​adapters/​prisma、better-auth/​adapters/​mongodb 等导入。

注意:Better Auth 使用 adapter 的 model 名,而非表名。若 Prisma model 为 User 对应表 users,用 modelName: "user"(Prisma 引用),而非 "users"。


Session 管理

存储优先级:

  1. 若配置了 secondaryStorage → session 存此处(不存 DB)
  2. 设 session.storeSessionInDatabase: true 可同时持久化到 DB
  3. 无 DB + cookieCache → 纯无状态模式

Cookie 缓存策略:compact(默认)、jwt、jwe。
关键选项:session.expiresIn、session.updateAge、session.cookieCache.maxAge、session.cookieCache.version(变更可令所有 session 失效)。


用户与 Account 配置

User:user.modelName、user.fields、user.additionalFields、user.changeEmail.enabled、user.deleteUser.enabled。
Account:account.modelName、account.accountLinking.enabled、account.storeAccountCookie。
注册必需字段:email 与 name。


邮件流程

  • emailVerification.sendVerificationEmail — 验证邮件发送,必须定义
  • emailVerification.sendOnSignUp / sendOnSignIn — 自动发送时机
  • emailAndPassword.sendResetPassword — 重置密码邮件

安全

advanced 中:useSecureCookies、disableCSRFCheck(有风险)、disableOriginCheck(有风险)、crossSubDomainCookies.enabled、ipAddress.ipAddressHeaders、database.generateId 等。
限流:rateLimit.enabled、rateLimit.window、rateLimit.max、rateLimit.storage。


Hooks

端点:hooks.before / hooks.after,{ matcher, handler } 数组,可用 createAuthMiddleware。
数据库:databaseHooks.user.create.before/​after 等,用于默认值或创建后逻辑。
Hook 上下文:session、secret、adapter、generateId()、baseURL 等。


插件

按路径导入以支持 tree-shaking:
import { twoFactor } from "better-auth/​plugins/​two-factor"
勿从 "better-auth/​plugins" 整体导入。

常用插件:twoFactor、organization、passkey、magicLink、emailOtp、username、admin、apiKey、bearer、jwt、multiSession、sso、openAPI 等。
客户端插件放在 createAuthClient({ plugins: [...] })。


客户端

从 better-auth/​client、better-auth/​react、better-auth/​vue 等导入。
常用方法:signUp.email()、signIn.email()、signIn.social()、signOut()、useSession()、getSession()、revokeSession() 等。


类型安全

推断类型:typeof auth.$Infer.Session、typeof auth.$Infer.Session.user。
前后端分离项目:createAuthClient()。


常见坑

  1. Model 与表名 — 配置用 ORM model 名,不是表名
  2. 插件 schema — 增删插件后重跑 CLI
  3. Secondary storage — 默认 session 存此处而非 DB
  4. Cookie cache — 自定义 session 字段不缓存,每次重新拉取
  5. 无状态模式 — 无 DB 时 session 仅存 cookie,缓存过期即登出
  6. 改邮箱流程 — 先发当前邮箱,再发新邮箱

资源

More skills from majiayu000

xiaohongshu logo
majiayu000/claude-arsenal

xiaohongshu

xiaohongshu

286 148
View
agent-task-conductor logo
majiayu000/claude-skill-registry

agent-task-conductor

Conduct multi-agent task orchestration and workflow coordination.

663 1
View
conductor-setup logo
majiayu000/claude-skill-registry

conductor-setup

Initialize project with Conductor artifacts (product definition,

663 1
View
animation-designer logo
majiayu000/claude-skill-registry

animation-designer

Expert in web animations, transitions, and motion design using Framer Motion and CSS

663 1
View
diagramming logo
majiayu000/claude-skill-registry

diagramming

Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...

663 1
View
h3-pg logo
majiayu000/claude-skill-registry-data

h3-pg

PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.

23 1
View
conductor-development logo
majiayu000/claude-skill-registry

conductor-development

Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...

663 1
View
conductor-status logo
majiayu000/claude-skill-registry

conductor-status

Display project status, active tracks, and next actions

663 1
View
dockerization logo
majiayu000/claude-skill-registry

dockerization

Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.

663 1
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View