手机号登录
短信验证码登录和注册配置指南
手机号登录使用短信验证码方式,用户输入手机号后收到 6 位验证码,输入即可登录或注册。
个人开发者推荐:使用 阿里云短信认证服务(PNVS) 作为短信服务商。个人实名即可开通,无需企业资质、无需备案签名模板,5000 条验证码短信仅 250 元。详见 阿里云短信。
确认短信路径
手机号登录默认使用阿里云短信认证服务(PNVS)。这是模板默认维护的验证码路径,适合国内个人开发者和小团队快速上线。
开通阿里云短信认证服务
登录 号码认证服务控制台,开通短信认证服务。这个方案属于 PNVS,只用于验证码场景,阿里云会提供系统赠送签名和模板;你不需要自己申请短信签名,也不需要提交模板审核。
获取 AccessKey
登录阿里云控制台后,点击右上角个人账号,在展开菜单里找到 AccessKey。按控制台提示完成安全校验后,创建或复制一组 AccessKey,并立即保存:

| 控制台字段 | 写入的环境变量 |
|---|---|
| AccessKey ID | ALIBABA_CLOUD_ACCESS_KEY_ID |
| AccessKey Secret | ALIBABA_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 加入你的产品依赖。
常见问题
想和其他创造者交流?
这篇文档有问题?