短信配置
短信配置用于设置阿里云短信服务,实现用户手机号验证码登录、注册等功能。开启后,用户可以通过手机号接收验证码的方式进行账号注册和登录。
配置概览
短信配置包含以下功能类别:
- 登录控制: 启用/禁用手机号验证码登录方式
- 阿里云认证: AccessKey ID 和 Secret 密钥
- 短信签名: 已审核通过的短信签名
- 短信模板: 验证码短信模板ID
配置项说明
登录开关
开启手机号注册/登录
- 功能说明: 控制是否允许用户使用手机号验证码方式登录和注册系统
- 可选值:
- 开启: 用户端登录页会显示"手机号登录"选项
- 关闭: 仅显示其他登录方式(如邮箱、账号密码等)
- 建议: 如果需要提供手机号快捷登录功能,建议开启此选项;开启前请确保已完成阿里云短信服务配置
阿里云认证信息
AccessKeyId
- 功能说明: 阿里云账号的访问密钥ID,用于API调用身份验证
- 获取方式:
- 登录阿里云控制台
- 进入"账号中心" → "AccessKey管理"
- 创建AccessKey(建议使用RAM子账号AccessKey)
- 复制AccessKey ID
- 权限要求: 需要包含 AliyunDysmsFullAccess(短信服务完整权限)或自定义权限
- 安全建议:
- 建议使用RAM子账号而非主账号AccessKey
- 定期轮换密钥
- 为子账号仅分配必要权限
AccessKeySecret
- 功能说明: 阿里云账号的访问密钥Secret,与AccessKeyID配对使用
- 获取方式: 在创建AccessKey时一同生成,仅显示一次,请妥善保存
- 安全建议:
- 不要在代码中硬编码
- 不要提交到版本控制系统
- 定期更换密钥
短信签名和模板
短信签名
- 功能说明: 短信开头显示的标识,如"【XX科技】您的验证码是..."
- 申请要求:
- 需要在阿里云短信服务控制台申请
- 签名名称通常为网站名称、公司名称或App名称
- 需要提交相关资质证明进行审核
- 审核时长: 通常1-3个工作日
- 示例: 如果您的网站叫"XX科技",签名可能是"XX科技"
- 注意事项:
- 签名必须先通过审核才能使用
- 签名内容要与实际业务相关
- 不同签名的日发送配额可能不同
短信模板ID
- 功能说明: 短信内容的模板代码,用于发送验证码短信
- 申请要求:
- 需要在阿里云短信服务控制台申请
- 模板内容需明确说明用途(验证码、通知等)
- 变量用
${name}格式表示
- 示例模板内容:
您的验证码是${code},该验证码5分钟内有效,请勿泄露。 - 审核时长: 通常1-3个工作日
- 模板变量: 系统会自动替换模板中的变量(如验证码、有效期等)
配置建议
安全建议
密钥管理
- 使用RAM子账号AccessKey,不要使用主账号密钥
- 为子账号设置最小权限原则,仅开通短信服务权限
- 定期(3-6个月)更换AccessKey
- 如果密钥泄露,立即禁用并重新生成
防止滥用
- 开启短信发送频率限制(后端默认已有限制)
- 监控短信发送量,及时发现异常
- 设置单手机号每日接收验证码上限
- 考虑添加图形验证码,防止恶意刷短信
成本控制
- 关注阿里云短信服务的计费规则
- 设置短信发送量的预算告警
- 优化验证码有效期,避免用户重复请求
配置流程建议
准备工作
- 注册阿里云账号并完成实名认证
- 开通短信服务(Dysms)
- 账户充值(短信服务按条收费)
申请签名和模板
- 在阿里云控制台申请短信签名
- 申请验证码短信模板
- 等待审核通过(1-3个工作日)
创建AccessKey
- 创建RAM子账号并授权短信服务权限
- 生成AccessKey ID和Secret
系统配置
- 将签名、模板ID、AccessKey填入系统配置
- 开启手机号登录开关
- 测试发送验证码功能
测试验证
- 使用自己的手机号测试登录流程
- 确认短信内容、签名显示正确
- 验证验证码校验逻辑
常见问题
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个工作日
- 首次申请可能需要更长时间
- 审核通过后会短信通知
- 审核不通过会说明原因,可修改后重新提交