概览
| 登录方式 | 用户的操作 | 发送的邮件 | 用 Proxy Mail QA 测试 |
|---|---|---|---|
| 邮箱和密码 | 设置密码,然后确认邮箱 | 确认、密码重置、邮箱变更 | 可以,每一封都行 |
| 邮件验证码 | 输入邮件中的短验证码 | 每次登录发送新的验证码 | 可以,带 Copy 按钮 |
| 魔法链接 | 点击邮件中的链接 | 每次登录发送新的链接 | 可以,而且我们从不预先打开链接 |
| Google、Apple、Microsoft 或 GitHub | 点击按钮并选择账号 | 登录时没有邮件 | 不能:请用你自己的真实账号 |
| 手机验证码 | 输入短信中的验证码 | 无:它是短信 | 不能:我们只接收邮件 |
| 企业登录(SSO) | 通过雇主的登录系统登录 | 登录时没有邮件 | 否 |
无论你选择哪种方式,你的应用仍会发送自己的邮件,例如邀请、收据和通知。不管用哪种登录方式,你都可以检查这些邮件是否送达、链接是否指向正确的位置。
邮箱和密码
最常见的一种。用户设置密码;如果开启了邮箱验证,他们会收到一封带链接或验证码的邮件,用过之后才能登录。
它发送的邮件:注册确认邮件、密码重置邮件,以及用户更改地址时用于确认新地址的邮件。
常见问题:
- 邮箱验证已关闭,所以任何人都能用不属于自己的地址或拼错的地址注册,而你永远联系不到他们。
- 邮箱验证已开启,但邮件始终没到,通常是因为应用仍在使用构建工具或数据库自带的入门邮件发送服务,它的限额很低。为什么邮件没有送达。
- 链接打开的是 localhost 或预览地址,而不是你已发布的应用。如何修复。
- 密码重置链接打开的页面无法设置新密码。
测试方法:用一个新地址注册,并使用链接或验证码。退出后重新登录。然后申请重置密码并完成整个流程。分步说明。
邮件验证码
用户输入邮箱,收到一个短验证码(通常是 6 位数字)并输入。无需记住密码。有些应用也用验证码确认注册:Base44 和 Clerk 都是这样。
它发送的邮件:每次登录都会发送一个新验证码。
常见问题:
- 验证码在邮件送达前就过期了。
- 再次申请验证码时,第一个没有失效,或者两个都失效了。
- 申请两次的用户收到“请求过多”提示,被锁定在外。
测试方法:申请一个验证码并使用。连续申请两个,检查是否只有最新的有效。当邮件注明验证码有效期时,Proxy Mail QA 会显示倒计时。更多验证码测试内容。
魔法链接
用户输入邮箱,点击你发送的链接。点一下即可,无需密码。
它发送的邮件:每次登录都会发送一个新链接。
常见问题:
- 链接打开的是 localhost,而不是你的应用。
- 链接在其他浏览器中失效,或在手机上失效,因为邮件应用会用自己的浏览器打开。
- 有些公司的邮件安全扫描工具会抢先打开链接,导致链接被用掉。
测试方法:申请一个链接,在同一浏览器中打开,然后在另一台设备上试试。检查已用过或已过期的链接是否会说明该怎么做。Proxy Mail QA 从不打开或预取链接,所以你点击时链接仍然有效。更多魔法链接内容。
Google、Apple、Microsoft 和 GitHub 按钮
用户点击使用 Google 继续(或 Apple、Microsoft、GitHub),然后选择账号。你的应用从不处理密码,所以 AI 应用构建工具很乐意加上这些按钮。
它发送的邮件:登录时不发送。由提供方处理。
常见问题:
- 在预览中正常,但在已发布的应用或自定义域名上失败。新地址不在提供方允许的重定向列表中,Google 会显示
redirect_uri_mismatch。 - 登录页面显示的是构建工具的名称,而不是你的应用名称。Lovable 和 Base44 都提供开箱即用的共享配置。如果你在意这一点,请在上线前换成你自己的凭据。
- 有人先用邮箱和密码注册,之后又用同一地址点击“使用 Google 继续”。决定这应该算同一个账号还是报错,并进行测试。
- Sign in with Apple 可以隐藏用户的邮箱。你的应用会收到一个以
privaterelay.appleid.com结尾的地址,只有在 Apple 注册了你的发信域名,你的邮件才能送达用户。
测试方法:这些按钮需要真实账号,所以请用你自己的 Google 或 Apple 账号,在已发布的应用和预览中都测试一遍。
手机验证码
用户输入手机号,通过短信收到验证码。这需要 Twilio 等短信服务商,每条短信都要付费。Proxy Mail QA 只接收邮件,所以这里帮不上忙。
企业登录(SSO)
面向企业销售的应用:员工通过雇主的登录系统登录,例如 Okta 或 Microsoft Entra ID,通常基于一种叫 SAML 的标准。Lovable 和 Base44 都支持。登录时不发邮件,但团队邀请通常仍通过邮件发送。
使用构建工具自己的账号登录
有些构建工具允许用户用构建工具本身的账号登录。使用 Replit Auth 时,你的用户在 Replit 品牌的页面上用 Replit 账号登录,由 Replit 发送邮件,例如密码重置邮件。Lovable 也提供 Sign in with Lovable。这适合内部工具和面向其他构建者的应用。对于公开应用,你通常需要自己的账号体系:在 Replit 上,就是 Clerk Auth。
新应用应该用哪种?
对大多数应用来说:邮箱加 Google。
- Google 对大多数人来说是最快的注册方式。
- 邮箱覆盖其他所有人:没有 Google 的人、使用工作地址的人,以及不想关联账号的人。
- 如果你不想用密码,优先选择验证码或魔法链接。当用户在手机上看邮件、却在笔记本电脑上用你的应用时,验证码更好用。
- 保持邮箱验证开启,并在上线前用你自己的域名发送邮件。
你的构建工具会配置哪种登录?
| 构建工具 | 提供的登录 | 登录选项 |
|---|---|---|
| Lovable | Lovable Cloud,或你自己的 Supabase 项目 | 邮箱(默认)、Google、Apple、Microsoft、手机、SAML SSO、Sign in with Lovable |
| Replit | Replit Auth(Replit 账号),或 Clerk Auth(你自己的账号) | 邮箱、Google、GitHub、Apple、X |
| Bolt | Bolt 内置数据库 | 邮箱、Google |
| Base44 | Base44 内置登录 | 邮箱和密码加邮件验证码、Google、Microsoft、Facebook、企业 SSO |
| v0 | 通常是 Supabase,有时是 Clerk | 邮箱和密码、验证码、魔法链接、Google 等 |
| Antigravity | 通常是 Firebase Authentication | 邮箱和密码、邮件链接、Google 等 |
| Claude Code, Codex, Cursor | 你要求的任何一种 | 通常是 Supabase、Clerk、Firebase、Auth.js 或 Better Auth |
编程智能体使用的登录服务
用编程智能体构建时,它会把你的应用接入一个登录服务。每种服务发送的邮件不同,也各有一个最常出问题的地方:
| 登录服务 | 发送的邮件 | 最常出问题的地方 |
|---|---|---|
| Supabase Auth | 确认邮件、魔法链接或验证码、密码重置、邀请、邮箱更改 | Site URL,以及内置发送服务:在你配置自定义 SMTP 之前,它只发给你的 Supabase 团队成员,每小时 2 封 |
| Clerk | 验证码(或链接)、登录验证码、密码重置验证码 | 开发环境和生产环境相互独立,用户也分开;生产环境需要你自己域名的 DNS 记录 |
| Firebase Authentication | 验证链接、密码重置链接、邮件链接登录 | 除非你的应用做检查,否则用户在验证前就能登录;链接必须指向已授权的域名 |
| Auth.js | 魔法链接,通过 Resend 等邮件服务商发送 | 密码注册没有内置邮件:验证和重置需要你自己写代码 |
| Better Auth | 验证、密码重置,以及通过插件实现的魔法链接或验证码 | 它会调用你编写的发送函数,所以在接入邮件服务商之前什么都发不出去 |