平台功能(自研)可视化配置
号码认证配置
号码认证用于发送和校验短信验证码,支撑手机号登录、注册验证、找回密码等场景。配置保存在 sys_phone_verify_config,不再写死在 yml 里。

号码认证配置(截图占位)
/images/docs/settings-phone-verify.png建议 1920 × 1080,截服务商、AppId、签名与默认模板。
支持的场景
| 场景 | 说明 |
|---|---|
| 手机号登录 | 登录类型 phoneverify,用手机号 + 短信验证码登录 |
| 注册验证 | 与安全配置的「注册邮箱/手机验证」联动 |
| 业务校验 | 应用通过 PhoneVerifyUtils 发送 / 校验验证码 |
服务商与字段
| 服务商 | 必填字段 | 说明 |
|---|---|---|
| 阿里云(已实现) | AccessKey ID、AccessKey Secret、签名名称 | 接入点默认 dypnsapi.aliyuncs.com |
| 腾讯云(预留) | SecretId、SecretKey、SDK AppId、签名名称 | 当前未实现,保存后调用会报「暂未实现」 |
| 华为云(预留) | App Key、App Secret、通道号、签名通道号 | 当前未实现,保存后调用会报「暂未实现」 |
通用字段:
| 字段 | 数据库列 | 说明 |
|---|---|---|
| 配置名称 | config_name | 便于区分多套配置 |
| 默认模板 ID | default_template_id | 阿里云短信模板 CODE |
| 调试模式 | debug_mode | 1 开启时发送接口会返回验证码,仅限开发环境 |
| 是否默认 | is_default | 平台只会启用一个默认配置 |
| 备注 | remark | 运维备注 |
密钥加密:
accessKeySecret在数据库中加密存储,列表接口不返回明文。查看明文需要system:phoneVerifyConfig:secretQuery权限。
默认配置如何生效
管理员点击「设为默认」
→ sys_phone_verify_config.is_default = Y
→ 默认配置 ID 写入 Redis(缓存键由 PhoneVerifyConstant 定义)
→ PhoneVerifyUtils 调用时读取默认配置
→ PhoneVerifyFactory 按 configId 构建并缓存客户端客户端按 租户 + configId 缓存,配置变化后会自动重建。修改配置后不需要重启,但默认配置切换会立即影响后续发码。
验证码规则
平台默认:
- 验证码长度 6 位;
- 有效期 5 分钟;
- 缓存键包含手机号 + 业务类型,不同业务互不覆盖;
- 校验成功后删除缓存,验证码一次性使用。
业务类型由调用方传入,例如登录默认 login。自定义业务请使用独立字符串,避免与登录验证码串用。
手机号登录
登录请求使用 grantType=phoneverify,请求体包含:
{
"tenantId": "000000",
"clientId": "平台客户端 ID",
"grantType": "phoneverify",
"phonenumber": "13800000000",
"verifyCode": "123456",
"businessType": "login"
}登录流程:
- 按手机号查找用户(租户内);
- 校验账号是否存在、是否停用;
- 校验验证码;
- 构建登录用户并签发 token。
失败会记录登录日志,并返回验证码错误 / 过期。
调试模式
debugMode=1 时,发送验证码接口的响应会带上 code 字段,便于本地联调。
绝不要在生产开启调试模式:它会把验证码直接返回给调用方,等于取消短信验证。
多租户
配置带 tenant_id。每个租户可以配置自己的服务商账号;默认配置也按租户隔离。跨租户调用时必须显式指定 configId,不要依赖默认配置。
排错
| 现象 | 原因 | 处理 |
|---|---|---|
| 「号码认证服务默认配置无法找到」 | 没有设置默认配置,或 Redis 缓存丢失 | 在页面点击「设为默认」,必要时重启刷新缓存 |
| 「配置 ID 信息不存在」 | 配置被删除但缓存未失效 | 清除 sys_phone_verify_config 缓存 |
发送失败 isv.AMOUNT_NOT_ENOUGH | 阿里云短信余额不足 | 充值 |
发送失败 isv.SMS_SIGNATURE_ILLEGAL | 签名未审核 / 与账号不匹配 | 在阿里云控制台确认签名 |
| 收不到短信 | 模板未审核、手机号黑名单、运营商拦截 | 查看服务商控制台发送记录 |
| 腾讯云 / 华为云报「暂未实现」 | 当前只实现了阿里云 | 使用阿里云,或自行实现 PhoneVerifyService |