关于 better-auth
better-auth 技能为使用 Better Auth 构建自托管 TypeScript 身份验证的开发者提供配置、安全与升级指导,覆盖核心库、插件、适配器和框架接入。
主要功能
- 01服务端与客户端配置指导
- 02插件及数据库适配器说明
- 03框架挂载与会话验证
- 04版本升级和安全检查
适用场景
- 01配置 Better Auth 登录与会话
- 02添加插件并生成数据库架构
- 03升级身份验证依赖并检查风险
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill better-auth安装后在 Claude Code 中输入/better-auth确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/adapters-schema.mdframeworks-client.mdplugins-ecosystem.mdsecurity-patterns.mdsource-map.mdusage-guide.md详细介绍
Better Auth
将此技能用于基于 Better Auth([email protected])的自托管 TypeScript 身份验证:服务端实例、客户端 SDK、插件、适配器、框架挂载和安全性。
快照:2026-10-01。latest 为 1.7.7(稳定版)。不要将 1.7 视为 rc/beta。要求版本 ≥ 1.7.7:更早版本(最早可追溯至 1.4.0-beta.18)存在严重的 Magic Link 账户接管漏洞(GHSA-965c-763c-88jm)和 OAuth Proxy 接管漏洞(GHSA-r4xp-prcw-77qf);不存在 1.6.x 修复版本。如果版本不同,请从 source-map.md 刷新信息。
工作流
- 检查本地配置:
- 核心:
better-auth(快照版本 1.7.7)。CLI:bunx auth@latest(包[email protected])——不要使用过时的@better-auth/[email protected]。CLI 需要 Node.js ≥ 22.12。 - 环境变量:
BETTER_AUTH_SECRET(≥32)、BETTER_AUTH_URL/baseURL、trustedOrigins。 - 数据库:Kysely/连接池与 Drizzle/Prisma/Mongo 适配器;辅助存储(Redis)。默认启用架构验证。
- 插件:服务端插件 + 对应的客户端插件;更改后生成架构。
- 挂载:通过
auth.handler/ 框架辅助函数挂载到/api/auth/*(默认basePath)。
- 核心:
- 日常设置请先遵循 usage-guide.md。从 1.6 起,先运行
bunx auth@latest upgrade,并参阅 1.7 升级指南——生成的 SQL 并不包含完整升级内容。 - 版本有变动时刷新文档。请从 source-map.md 开始。
- 按需查看更深入的细节:
- 插件和带作用域的包:plugins-ecosystem.md。
- 架构、适配器、CLI:adapters-schema.md。
- 框架挂载和客户端:frameworks-client.md。
- 安全性、会话、1.7 身份验证/OAuth 注意事项:security-patterns.md。
- 让所有已安装的
@better-auth/*与核心保持 1.7.x 一致(独立版本线的utils、infra、agent-auth、dash除外)。优化时优先使用带作用域的适配器(better-auth/minimal)。 - 通过会话冒烟测试(
auth.api.getSession)、登录/登出、插件架构迁移,以及生产环境密钥/来源检查进行验证。
核心判断
- 默认使用 Cookie 数据库会话——不是 JWT。仅当 Cookie 不够用时才使用
jwt/bearer/ API 密钥。 - 在
lib/auth.ts中创建单例auth(命名导出有助于 CLI 发现)。单独创建auth-client.ts。 - 服务端:使用真实请求标头调用
auth.api.*。客户端:使用createAuthClient+ 框架入口(better-auth/react等)。 - 大多数功能都通过插件提供:注册服务端和客户端插件,然后运行
bunx auth@latest generate(ORM)或migrate(Kysely)。 - Passkey / API 密钥 / SSO / SCIM / OAuth-provider / MCP / CIMD / Stripe / Expo 均为带作用域的包。MCP 对应
@better-auth/mcp,而不是better-auth/plugins。 - **
oidcProvider已移除。**请改用@better-auth/oauth-provider。不要在mcp()旁边同时注册oauthProvider()——mcp()就是该提供程序。 - 通用 OAuth 使用
signIn.social/linkSocial和/api/auth/callback/:id。不存在genericOAuthClient()。 - 绝不能将中间件中的 Cookie 是否存在视为身份验证依据——必须验证会话。不要为了“修复” CORS 而禁用 CSRF/来源检查。
- 升级到 1.7.7 需要协调切换:所有共享验证存储的服务端,以及所有 OAuth Proxy 参与方都必须一起升级;升级前发出的待处理 Magic Link 和 OAuth/SAML 状态将失效。
- 开发环境中的速率限制默认关闭或较弱;内存存储无法支持多实例——生产环境请使用 Redis/数据库。
- 命令示例优先使用
bun/bunx。
验证
优先使用仓库自带的命令。覆盖相关子集:
bun pm ls better-auth,并检查匹配的@better-auth/*版本(全部使用 1.7.x,且 ≥ 1.7.7)。- 根据需要运行
bunx auth@latest info/secret;插件变更后运行 schemagenerate/migrate;使用只读命令bunx auth@latest check schema验证适配器 schema。 - 冒烟测试:挂载处理器、
getSession、电子邮件或社交登录、退出登录。 - 插件:确认客户端方法可解析;如已启用,检查组织/2FA/通行密钥/OAuth 提供方/MCP 流程。
- 生产环境:检查
baseURL、密钥长度、trustedOrigins、HTTPS Cookie、限流存储,以及 schema 验证未失败。 - 安全性:检查角色/
additionalFields是否设置了input: false;生产配置中不得包含testUtils。 - 从 1.6 升级到 1.7 后:检查 Microsoft
oid行、OAuth 客户端、SCIM 重新配置、Expoawait getCookie(),以及应用过该 schema 时对 1.7.0–1.7.2issuer的清理。
报告已运行和未运行的检查,以及仍存在的版本假设。
评论
支持 Markdown