发布于 2026-10-28 · 最后核实:2026-10-28 · 文中价格与额度以各官网为准
网站做到「用户要能保存自己的东西」,就得加登录。一搜一堆名字:有的按用户数收费,有的免费但要自己配数据库,还有一个听说换了维护团队。到底差在哪?
结论先说:想最快上线、不想碰数据库和会话,用 Clerk;后端已经用 Supabase,就用它自带的 Supabase Auth;想让用户数据留在自己的数据库、要微信登录或者不想按月活付费,用 Better Auth;Auth.js 已由 Better Auth 团队接手,老项目可以继续用,新项目不建议再从它起步。本文信息核实于 2026-10,价格和额度随时可能调整,以官网为准。
先搞懂:托管服务和开源库
| 托管服务(Clerk、Supabase Auth) | 开源库(Better Auth、Auth.js) | |
|---|---|---|
| 用户数据存在哪 | 服务商那里(Supabase 存在你项目的 Postgres 里,数据库由它托管) | 你自己的数据库 |
| 会话、密码哈希、发验证邮件 | 服务商处理 | 库帮你实现逻辑,数据库和发信服务你自己准备 |
| 费用 | 按月活用户计费,有免费额度 | 库免费,付数据库、邮件、短信的钱 |
一句话:托管服务省事但按人头交钱;开源库多花点配置时间,换来数据和成本都在自己手里。SuperTokens 介于两者之间,可自部署也有托管版,本文不展开。
价格和免费额度
| 免费额度 | 付费起价 | 计费方式 | |
|---|---|---|---|
| Clerk | Hobby:每应用 5 万 MRU | Pro $25/月(年付 $20/月) | 按月留存用户(MRU),超出 5 万后 $0.02/人/月起 |
| Supabase Auth | Free 计划:5 万月活(MAU) | Pro $25/月起,含 10 万 MAU | 超出后 $0.00325/MAU |
| Better Auth | 库免费(MIT 许可) | 可选托管基础设施 Pro $20/月 | 不按用户收费,数据库自付 |
| Auth.js | 库免费(ISC 许可) | 无 | 不按用户收费,数据库自付 |
几点补充:
- Clerk 的 MRU 比月活更宽松。注册 24 小时后再次访问才算留存用户,注册完就不再来的人不计费。但 Hobby 不含 Passkey、MFA、短信验证码,社交登录最多 3 个,会话固定 7 天,界面带 Clerk 标识。
- Supabase 免费计划不只限月活。还限制最多 2 个活跃项目、500MB 数据库,一周不活跃会被暂停。
- 开源库也不是零成本。你需要一个数据库(可用 Supabase、Neon 等的免费档,见一个人上线网站的免费工具组合)和一个发信服务。Better Auth 的付费基础设施提供仪表盘、审计日志等,是可选的。
登录方式对比
| Clerk | Supabase Auth | Better Auth | Auth.js | |
|---|---|---|---|---|
| 邮箱 + 密码 | 有 | 有 | 有 | 有(Credentials,需自己校验密码) |
| 魔法链接 / 邮箱验证码 | 有 | 有 | 插件(Magic Link、Email OTP) | 有魔法链接 |
| 社交登录 | 有,免费版最多 3 个 | 有 | 有 | 有,内置提供商很多 |
| Passkey | Pro 起 | 有,官方标注实验性 | 插件 | 有,官方标注实验性、不建议生产使用 |
| 两步验证 | Pro 起 | 有(TOTP 免费,手机号另收费) | 插件 | 文档里没有现成方案 |
| 组织 / 多租户 | 有,免费含 100 个月留存组织、每组织 20 人 | 文档里没有现成模块 | 插件(Organization) | 没有 |
| 框架 | Next.js、React、Expo、Astro、Nuxt、Vue、Express 等 | Next.js、Astro、React、React Native 等 | Next.js、Nuxt、SvelteKit、Astro、Hono、Express 等 | Next.js、SvelteKit、Express、Qwik、SolidStart |
Auth.js 现在怎么样了
Auth.js 原名 NextAuth.js。2025 年 9 月 22 日,Better Auth 官方博客宣布 Auth.js 改由 Better Auth 团队维护;Auth.js 原维护者也在 GitHub 讨论区发了公告,承认过去一年开发节奏放缓。官方说法是:
- 现有 Auth.js 用户可以继续用,安全补丁和紧急问题会继续处理。
- 新项目建议直接用 Better Auth,除非你需要「不依赖数据库的无状态会话」,这是 Better Auth 目前的主要缺口。
- 有从 Auth.js 迁移的官方指南,但当前项目运行良好就不急着迁。
npm 上 next-auth 稳定版仍是 4.x,v5 仍是 beta,看老教程时留意版本。
国内用户:微信和手机号
- 微信登录:Better Auth 和 Auth.js 官方文档都有内置的 WeChat 提供商,需先在微信开放平台注册应用,拿到 AppID 和 AppSecret。Clerk 和 Supabase Auth 官方社交登录列表里没有看到微信。
- 手机号短信:Clerk 需付费计划、按条计费,默认只开放美国和加拿大号码,其他国家要在后台打开。Supabase Auth 需接 Twilio、MessageBird、Vonage 等短信服务。Better Auth 的手机号插件负责验证码逻辑,发短信要你自己接服务商。Auth.js 没有现成的短信登录。
怎么选:按你的情况对号入座
想今天就上线,用户主要在海外。用 Clerk。登录页和用户管理后台都是现成的,5 万留存用户以内免费。
数据库已经是 Supabase。直接用 Supabase Auth。用户表就在你的 Postgres 里,能直接配合行级安全(RLS),不用再接第二家服务。
想把用户数据握在自己手里,或者用户多但不赚钱。用 Better Auth。免费产品用户一多,按人头计费会越来越贵。
要微信扫码登录。Better Auth(或继续用 Auth.js 的老项目)。
做 B2B,要组织和邀请成员。Clerk 最现成;Better Auth 的 Organization 插件也能做。
常见的坑
- 回调地址没配全。社交登录要在 Google、GitHub、微信等平台填回调地址,本地、预览、正式域名分别加上;Supabase 的 Redirect URLs 也有白名单。登录跳回报错,多半是这里。
- 开发密钥带到了生产。Clerk 的开发实例密钥是
pk_test_/sk_test_,生产是pk_live_/sk_live_;开发环境的社交登录用 Clerk 的共享 OAuth 凭据,生产要换成你自己的,还要有自己的域名和 DNS 记录,开发实例的用户也不能迁到生产。用环境变量区分两套配置,别把密钥写进代码,用 AI 写代码时尤其注意,见用 Agent 写代码不翻车。 - 验证邮件发不出去。Supabase 自带的发信只发给项目团队成员,目前每小时 2 封,上线前要配自己的 SMTP(如 Resend、AWS SES)。Better Auth 和 Auth.js 本来就要自己接发信。发信域名记得配 SPF、DKIM、DMARC。
- 按月活计费,用户涨了账单也涨。算一下:Clerk 按年付时,10 万留存用户约 $20 + 5 万 × $0.02 = $1,020/月;Supabase Pro 超出 10 万 MAU 后每人 $0.00325。选型前按预期用户量算一遍。
- 以后想换,密码哈希对不上。Better Auth 默认用 scrypt,Clerk 用 bcrypt,从 Clerk 迁到 Better Auth 要把密码校验改成 bcrypt;导入 Clerk 要在
password_hasher注明旧算法。迁移还会让所有登录状态失效。
参考资料
- Clerk:定价页 — https://clerk.com/pricing
- Clerk 文档:Social connections 全部提供商 — https://clerk.com/docs/guides/configure/auth-strategies/social-connections/all-providers
- Clerk 文档:Sign-up and sign-in options(SMS 白名单) — https://clerk.com/docs/guides/configure/auth-strategies/sign-up-sign-in-options
- Clerk 文档:Deploy to production — https://clerk.com/docs/guides/development/deployment/production
- Supabase:定价页 — https://supabase.com/pricing
- Supabase 文档:Phone sign-in — https://supabase.com/docs/guides/auth/phone-login
- Supabase 文档:Passkey — https://supabase.com/docs/guides/auth/passkeys
- Supabase 文档:Custom SMTP — https://supabase.com/docs/guides/auth/auth-smtp
- Better Auth:Auth.js is now part of Better Auth — https://www.better-auth.com/blog/authjs-joins-better-auth
- Better Auth:定价 — https://www.better-auth.com/pricing
- Better Auth 文档:WeChat — https://www.better-auth.com/docs/authentication/wechat
- Better Auth 文档:Phone Number 插件 — https://www.better-auth.com/docs/plugins/phone-number
- Better Auth 文档:Migrating from Clerk — https://www.better-auth.com/docs/guides/clerk-migration-guide
- Auth.js:GitHub 仓库 — https://github.com/nextauthjs/next-auth
- Auth.js:GitHub 公告 Discussion #13252 — https://github.com/nextauthjs/next-auth/discussions/13252
- Auth.js 文档:WebAuthn — https://authjs.dev/getting-started/authentication/webauthn
- Auth.js 文档:WeChat provider — https://authjs.dev/reference/core/providers/wechat
常见问题
- Clerk 免费能用多少用户?
- 按 Clerk 定价页(2026 年 10 月):Hobby 免费计划每个应用 5 万月留存用户(MRU)。用户注册 24 小时后再次回来才算留存用户。超出需升级 Pro(月付 $25,年付折合 $20/月),之后每个 MRU $0.02/月起。Passkey、MFA 要 Pro 才有。
- Auth.js(NextAuth)还在维护吗?
- Auth.js 于 2025 年 9 月宣布由 Better Auth 团队接手维护。现有用户可以继续用,安全补丁和紧急问题会继续处理;新项目官方建议用 Better Auth,除非需要不依赖数据库的无状态会话。
- Better Auth 和 Auth.js 免费吗?
- 两者都是开源库,Better Auth 和 Auth.js 分别采用 MIT 和 ISC 许可,库本身免费。数据库、发邮件、发短信的费用由你承担。Better Auth 另有可选的付费基础设施(Pro $20/月),不买不影响使用。
- 哪家原生支持微信登录和手机号短信登录?
- Better Auth 和 Auth.js 的官方文档里都有内置的微信(WeChat)登录提供商;Clerk 和 Supabase Auth 的官方社交登录列表里没有看到微信。手机号短信:Clerk 和 Supabase Auth 支持,按条付费或需接短信服务;Better Auth 有手机号插件,短信自己接;Auth.js 没有现成方案。
- 一个人做小项目,选哪家?
- 本文的建议:想最快上线、用户在海外,用 Clerk;数据库已是 Supabase,用 Supabase Auth;想让数据留在自己的数据库或要微信登录,用 Better Auth;新项目不建议再从 Auth.js 起步。