00 / 00

手机号登录

短信验证码登录和注册配置指南

手机号登录使用短信验证码方式,用户输入手机号后收到 6 位验证码,输入即可登录或注册。

个人开发者推荐:使用 阿里云短信认证服务(PNVS) 作为短信服务商。个人实名即可开通,无需企业资质、无需备案签名模板,5000 条验证码短信仅 250 元。详见 阿里云短信

确认短信路径

手机号登录默认使用阿里云短信认证服务(PNVS)。这是模板默认维护的验证码路径,适合国内个人开发者和小团队快速上线。

开通阿里云短信认证服务

登录 号码认证服务控制台,开通短信认证服务。这个方案属于 PNVS,只用于验证码场景,阿里云会提供系统赠送签名和模板;你不需要自己申请短信签名,也不需要提交模板审核。

获取 AccessKey

登录阿里云控制台后,点击右上角个人账号,在展开菜单里找到 AccessKey。按控制台提示完成安全校验后,创建或复制一组 AccessKey,并立即保存:

阿里云账号菜单中的 AccessKey 入口

控制台字段写入的环境变量
AccessKey IDALIBABA_CLOUD_ACCESS_KEY_ID
AccessKey SecretALIBABA_CLOUD_ACCESS_KEY_SECRET

AccessKey Secret 只会在创建时显示一次,后面无法再次查看。丢失后只能禁用旧密钥,再创建新的 AccessKey。生产环境里更安全的做法是创建 RAM 子用户,只给它短信验证码相关权限,再使用这个子用户的 AccessKey。

配置短信服务

手机号登录只需要能发送验证码短信。推荐优先使用阿里云短信认证服务(PNVS),个人实名即可开通,不需要企业资质,也不需要自建短信签名和模板。

短信属于多个产品可复用的基础能力,默认写入共享配置 packages/config/.env。如果某个产品要使用不同短信账号,再写到对应的 products/<product>/packages/config/.env 覆盖。

# 阿里云短信认证服务(PNVS)
ALIBABA_CLOUD_ACCESS_KEY_ID=your-access-key-id
ALIBABA_CLOUD_ACCESS_KEY_SECRET=your-access-key-secret
ALIYUN_SMS_REGION=cn-hangzhou

# PNVS 使用阿里云预置签名和模板,不需要自建短信签名和模板。

确认手机号登录路由

手机号登录的 API 路由已内置,无需额外配置。前端页面路径为 /auth/login/phone,API 端点由 Better Auth 的 phoneNumber 插件自动生成。

短信验证码有效期为 5 分钟,允许 3 次验证尝试。手机号验证通过后会自动注册新用户(如果该手机号尚未注册)。手机号格式会通过 @repo/utils 包中的 validateFullPhoneNumber 自动校验,支持国际号码。

完整的短信服务配置说明,参见 短信服务。如果要改用腾讯云或 Twilio,需要在代码中显式引入 @repo/sms/providers/tencent@repo/sms/providers/twilio,并把对应 SDK 加入你的产品依赖。

常见问题

想和其他创造者交流?

这篇文档有问题?

On this page