以下文章来源于CodeSpirit-码灵,作者magiccodes
CodeSpirit 实现了基于短信验证码的登录认证方式,为用户提供便捷的手机号登录能力。系统支持多个短信服务提供商,具备完善的验证码管理和安全防护机制,支持手机号自动注册/登录。

第三方服务基础设施策略层服务层API层客户端层微信小程序Web前端移动应用AuthControllerUserSettingsControllerAuthService认证服务SmsCodeService短信验证码服务SettingsService配置服务ISmsSender接口TencentCloudSmsSender腾讯云实现AliyunSmsSender阿里云实现DevelopmentSmsSender开发模式Redis缓存验证码存储数据库用户数据腾讯云短信API阿里云短信API


系统采用策略模式支持多个短信服务提供商:
提供商 | 说明 | 适用场景 |
|---|---|---|
无(开发模式) | 仅记录日志,不实际发送 | 本地开发环境 |
腾讯云短信 | 腾讯云SMS服务 | 生产环境 |
阿里云短信 | 阿里云SMS服务 | 生产环境 |
参数 | 默认值 | 说明 |
|---|---|---|
CodeLength | 6 | 验证码长度(位) |
CodeExpireSeconds | 300 | 验证码有效期(秒),默认5分钟 |
SendIntervalSeconds | 60 | 发送间隔(秒),防止频繁发送 |
EnableSuperCode | false | 是否启用超级验证码 |
SuperCode | "000000" | 超级验证码内容,始终有效 |

验证码缓存键格式:
sms:code:{tenantId}:{phoneNumber}CodeExpireSeconds 配置自动过期系统提供两种配置方式:
通过管理后台的用户设置模块配置:
GET /identity/api/UserSettings/sms - 获取配置PUT /identity/api/UserSettings/sms - 保存配置配置项说明:
配置项 | 是否必填 | 说明 |
|---|---|---|
Enabled | 是 | 是否启用短信验证码登录 |
Provider | 是 | 短信服务提供商(无/腾讯云/阿里云) |
SecretId | 条件必填 | 腾讯云SecretId 或 阿里云AccessKeyId |
SecretKey | 条件必填 | 腾讯云SecretKey 或 阿里云AccessKeySecret |
SdkAppId | 条件必填 | 腾讯云SdkAppId(仅腾讯云需要) |
SignName | 是 | 短信签名 |
TemplateId | 是 | 验证码模板ID |
腾讯云配置示例:
TencentCloudAKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxx1400xxxxxxCodeSpirit12345阿里云配置示例:
AliyunLTAI5txxxxxxxxxxxxxxxxxxxxxxxxxxxxxxCodeSpiritSMS_123456789超级验证码:在开发和测试环境中启用超级验证码功能:
EnableSuperCode: trueSuperCode: 000000(或自定义)优势:
⚠️ 警告:生产环境必须禁用超级验证码功能!
每个租户可以独立配置短信服务:

防护措施:

安全建议:
EnableSuperCode = false小程序会员页面提供两种登录方式:

发送验证码:
验证码登录:
小程序端使用以下API:
端点 | 方法 | 说明 |
|---|---|---|
/auth/sms/send | POST | 发送验证码 |
/auth/sms/login | POST | 验证码登录 |
提供商 | 优势 | 适用场景 |
|---|---|---|
腾讯云短信 | 稳定性高、国内到达率好 | 主要服务国内用户 |
阿里云短信 | 价格实惠、接入简单 | 中小规模应用 |
开发模式 | 无需付费、调试方便 | 开发测试环境 |
推荐模板格式:
【签名】验证码:{1},{2}分钟内有效,请勿泄露。示例:
【CodeSpirit】验证码:123456,5分钟内有效,请勿泄露。错误场景 | 处理方式 |
|---|---|
手机号格式错误 | 前端验证,提示用户重新输入 |
发送太频繁 | 显示倒计时,禁用发送按钮 |
验证码错误 | 提示用户重新输入,可重试 |
验证码过期 | 提示用户重新发送验证码 |
短信服务商错误 | 记录日志,提示用户稍后重试 |
✅ 推荐做法:
⚠️ 注意事项:
使用超级验证码进行测试:
EnableSuperCode = trueSuperCode = "000000"000000 登录使用真实短信进行测试:
推荐测试场景:
建议监控以下指标:
指标 | 说明 | 告警阈值 |
|---|---|---|
验证码发送成功率 | 成功发送数/总请求数 | < 95% |
验证码验证成功率 | 验证通过数/验证请求数 | < 80% |
平均发送耗时 | 从请求到发送完成的时间 | > 3秒 |
短信服务商错误率 | 服务商返回错误的比例 | > 5% |
系统会记录以下关键日志:
版本 | 日期 | 说明 |
|---|---|---|
v1.0 | 2026-01 | 初始版本,支持腾讯云和阿里云短信 |
A: 请按以下步骤排查:
A: 系统内置多重防护:
A: 可以,通过 CodeLength 参数配置:
A: 支持,需要:
A: 在管理后台操作:
Provider 为目标服务商最后更新:2026年1月
本文分享自 CodeSpirit-码灵 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!