Wujies 无界平台
平台功能(自研)可视化配置

号码认证配置

号码认证用于发送和校验短信验证码,支撑手机号登录、注册验证、找回密码等场景。配置保存在 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便于区分多套配置
默认模板 IDdefault_template_id阿里云短信模板 CODE
调试模式debug_mode1 开启时发送接口会返回验证码,仅限开发环境
是否默认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"
}

登录流程:

  1. 按手机号查找用户(租户内);
  2. 校验账号是否存在、是否停用;
  3. 校验验证码;
  4. 构建登录用户并签发 token。

失败会记录登录日志,并返回验证码错误 / 过期。

调试模式

debugMode=1 时,发送验证码接口的响应会带上 code 字段,便于本地联调。

绝不要在生产开启调试模式:它会把验证码直接返回给调用方,等于取消短信验证。

多租户

配置带 tenant_id。每个租户可以配置自己的服务商账号;默认配置也按租户隔离。跨租户调用时必须显式指定 configId,不要依赖默认配置。

排错

现象原因处理
「号码认证服务默认配置无法找到」没有设置默认配置,或 Redis 缓存丢失在页面点击「设为默认」,必要时重启刷新缓存
「配置 ID 信息不存在」配置被删除但缓存未失效清除 sys_phone_verify_config 缓存
发送失败 isv.AMOUNT_NOT_ENOUGH阿里云短信余额不足充值
发送失败 isv.SMS_SIGNATURE_ILLEGAL签名未审核 / 与账号不匹配在阿里云控制台确认签名
收不到短信模板未审核、手机号黑名单、运营商拦截查看服务商控制台发送记录
腾讯云 / 华为云报「暂未实现」当前只实现了阿里云使用阿里云,或自行实现 PhoneVerifyService

目录