Skip to content

短信配置

短信配置用于设置阿里云短信服务,实现用户手机号验证码登录、注册等功能。开启后,用户可以通过手机号接收验证码的方式进行账号注册和登录。

配置概览

短信配置包含以下功能类别:

  • 登录控制: 启用/禁用手机号验证码登录方式
  • 阿里云认证: AccessKey ID 和 Secret 密钥
  • 短信签名: 已审核通过的短信签名
  • 短信模板: 验证码短信模板ID

配置项说明

登录开关

开启手机号注册/登录

  • 功能说明: 控制是否允许用户使用手机号验证码方式登录和注册系统
  • 可选值:
    • 开启: 用户端登录页会显示"手机号登录"选项
    • 关闭: 仅显示其他登录方式(如邮箱、账号密码等)
  • 建议: 如果需要提供手机号快捷登录功能,建议开启此选项;开启前请确保已完成阿里云短信服务配置

阿里云认证信息

AccessKeyId

  • 功能说明: 阿里云账号的访问密钥ID,用于API调用身份验证
  • 获取方式:
    1. 登录阿里云控制台
    2. 进入"账号中心" → "AccessKey管理"
    3. 创建AccessKey(建议使用RAM子账号AccessKey)
    4. 复制AccessKey ID
  • 权限要求: 需要包含 AliyunDysmsFullAccess(短信服务完整权限)或自定义权限
  • 安全建议:
    • 建议使用RAM子账号而非主账号AccessKey
    • 定期轮换密钥
    • 为子账号仅分配必要权限

AccessKeySecret

  • 功能说明: 阿里云账号的访问密钥Secret,与AccessKeyID配对使用
  • 获取方式: 在创建AccessKey时一同生成,仅显示一次,请妥善保存
  • 安全建议:
    • 不要在代码中硬编码
    • 不要提交到版本控制系统
    • 定期更换密钥

短信签名和模板

短信签名

  • 功能说明: 短信开头显示的标识,如"【XX科技】您的验证码是..."
  • 申请要求:
    • 需要在阿里云短信服务控制台申请
    • 签名名称通常为网站名称、公司名称或App名称
    • 需要提交相关资质证明进行审核
  • 审核时长: 通常1-3个工作日
  • 示例: 如果您的网站叫"XX科技",签名可能是"XX科技"
  • 注意事项:
    • 签名必须先通过审核才能使用
    • 签名内容要与实际业务相关
    • 不同签名的日发送配额可能不同

短信模板ID

  • 功能说明: 短信内容的模板代码,用于发送验证码短信
  • 申请要求:
    • 需要在阿里云短信服务控制台申请
    • 模板内容需明确说明用途(验证码、通知等)
    • 变量用${name}格式表示
  • 示例模板内容:
    您的验证码是${code},该验证码5分钟内有效,请勿泄露。
  • 审核时长: 通常1-3个工作日
  • 模板变量: 系统会自动替换模板中的变量(如验证码、有效期等)

配置建议

安全建议

  1. 密钥管理

    • 使用RAM子账号AccessKey,不要使用主账号密钥
    • 为子账号设置最小权限原则,仅开通短信服务权限
    • 定期(3-6个月)更换AccessKey
    • 如果密钥泄露,立即禁用并重新生成
  2. 防止滥用

    • 开启短信发送频率限制(后端默认已有限制)
    • 监控短信发送量,及时发现异常
    • 设置单手机号每日接收验证码上限
    • 考虑添加图形验证码,防止恶意刷短信
  3. 成本控制

    • 关注阿里云短信服务的计费规则
    • 设置短信发送量的预算告警
    • 优化验证码有效期,避免用户重复请求

配置流程建议

  1. 准备工作

    • 注册阿里云账号并完成实名认证
    • 开通短信服务(Dysms)
    • 账户充值(短信服务按条收费)
  2. 申请签名和模板

    • 在阿里云控制台申请短信签名
    • 申请验证码短信模板
    • 等待审核通过(1-3个工作日)
  3. 创建AccessKey

    • 创建RAM子账号并授权短信服务权限
    • 生成AccessKey ID和Secret
  4. 系统配置

    • 将签名、模板ID、AccessKey填入系统配置
    • 开启手机号登录开关
    • 测试发送验证码功能
  5. 测试验证

    • 使用自己的手机号测试登录流程
    • 确认短信内容、签名显示正确
    • 验证验证码校验逻辑

常见问题

Q: 开启后用户端没有显示手机号登录选项? A: 请检查:

  • 确认登录开关已设置为"开启"状态
  • 刷新页面清除缓存
  • 检查前端控制台是否有报错

Q: 测试发送短信失败,提示"签名不合法"? A: 可能原因:

  • 签名未通过审核,请在阿里云控制台查看签名状态
  • 填写的签名名称与实际申请的不一致
  • 签名已过期或被禁用

Q: 验证码短信发送成功但用户收不到? A: 排查步骤:

  • 检查手机号是否正确输入
  • 确认手机号是否被运营商拦截(先检查短信垃圾箱)
  • 确认短信模板是否已通过审核
  • 查看阿里云控制台的发送日志

Q: 如何限制单用户的短信发送频率? A: 系统已内置以下限制:

  • 同一手机号60秒内只能发送1次
  • 同一IP地址每小时最多发送10次
  • 单手机号每天最多接收5条验证码
  • 可在后端代码中调整这些参数

Q: 阿里云短信服务如何收费? A: 计费规则:

  • 按短信发送条数计费
  • 国内短信通常0.045-0.055元/条
  • 验证码短信按67字/条计费,超过则拆分
  • 建议先充值少量金额测试
  • 可以在阿里云控制台设置费用预警

Q: AccessKeySecret输入后如何验证是否正确? A: 验证方法:

  • 保存配置后,使用手机号测试登录
  • 如果能正常收到验证码,说明配置正确
  • 如果报错"AccessKey非法",检查Secret是否复制完整
  • 确保没有多余的空格或换行符

Q: 是否支持其他短信服务商(如腾讯云、华为云)? A: 当前版本仅支持阿里云短信服务,未来版本可能会支持更多服务商。如果有其他需求,可以:

  • 通过二次开发接入其他短信服务商
  • 在GitHub提交Feature Request

Q: 短信签名和模板申请需要多长时间? A: 审核时间:

  • 一般情况下1-3个工作日
  • 首次申请可能需要更长时间
  • 审核通过后会短信通知
  • 审核不通过会说明原因,可修改后重新提交

相关文档