docs: 完善阿里云短信配置说明

配置文件更新:
- application-dev.yml: 优化阿里云短信配置,添加环境变量支持
- application.yml: 完善H5短信配置注释,分组显示

文档更新:
- 添加阿里云准备工作步骤
- 添加短信模板示例
- 添加环境变量配置说明(推荐生产环境使用)
This commit is contained in:
神码-方晓辉 2026-02-02 21:51:07 +08:00
parent 0b35da7f85
commit e13c9a7de3
3 changed files with 112 additions and 63 deletions

View File

@ -153,37 +153,35 @@ mail:
# Socket连接超时值单位毫秒缺省值不超时
connectionTimeout: 0
--- # sms 短信 支持 阿里云 腾讯云 云片 等等各式各样的短信服务商
# https://sms4j.com/doc3/ 差异配置文档地址 支持单厂商多配置,可以配置多个同时使用
--- # sms 短信服务配置(阿里云)
# 文档: https://sms4j.com/doc3/
# 阿里云短信控制台: https://dysms.console.aliyun.com/
sms:
# 配置源类型用于标定配置来源(interface,yaml)
# 配置源类型: yaml(配置文件) 或 interface(接口配置)
config-type: yaml
# 用于标定yml中的配置是否开启短信拦截接口配置不受此限制
# 是否开启短信拦截(框架层面的限制)
restricted: true
# 短信拦截限制单手机号每分钟最大发送,只对开启了拦截的配置有效
# 单手机号每分钟最大发送次数
minute-max: 1
# 短信拦截限制单手机号每日最大发送量,只对开启了拦截的配置有效
# 单手机号每日最大发送次数
account-max: 30
# 以下配置来自于 org.dromara.sms4j.provider.config.BaseConfig类中
blends:
# 唯一ID 用于发送短信寻找具体配置 随便定义别用中文即可
# 可以同时存在两个相同厂商 例如: ali1 ali2 两个不同的阿里短信账号 也可用于区分租户
config1:
# 框架定义的厂商名称标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
# ============================================================
# 阿里云短信配置H5接口使用
# 配置名称 "alibaba" 与 h5.sms.sms-config-name 对应
# ============================================================
alibaba:
# 厂商标识(固定值)
supplier: alibaba
# 有些称为accessKey有些称之为apiKey也有称为sdkKey或者appId。
access-key-id: 您的accessKey
# 称为accessSecret有些称之为apiSecret
access-key-secret: 您的accessKeySecret
signature: 您的短信签名
sdk-app-id: 您的sdkAppId
config2:
# 厂商标识,标定此配置是哪个厂商,详细请看厂商标识介绍部分
supplier: tencent
access-key-id: 您的accessKey
access-key-secret: 您的accessKeySecret
signature: 您的短信签名
sdk-app-id: 您的sdkAppId
# -------------------- 以下参数需要替换为真实值 --------------------
# AccessKey ID阿里云控制台 - AccessKey管理
# 建议使用RAM子账号仅授予短信发送权限
access-key-id: ${ALIYUN_SMS_ACCESS_KEY:您的AccessKeyId}
# AccessKey Secret
access-key-secret: ${ALIYUN_SMS_ACCESS_SECRET:您的AccessKeySecret}
# 短信签名(阿里云短信控制台 - 签名管理,需审核通过)
# 例如:盘古教育、湖北新华
signature: ${ALIYUN_SMS_SIGNATURE:您的短信签名}
--- # 三方授权

View File

@ -265,16 +265,36 @@ warm-flow:
# 默认Authorization如果有多个token用逗号分隔
token-name: ${sa-token.token-name},clientid
--- # H5短信防刷配置
--- # H5短信配置阿里云
# ============================================================
# H5接口短信验证码配置
# 阿里云短信模板申请: https://dysms.console.aliyun.com/
# ============================================================
h5:
sms:
# 是否启用短信发送false时仅打印日志用于测试
# ---------- 基础配置 ----------
# 是否真正发送短信false时仅打印日志用于开发测试
# 生产环境必须设置为 true
enabled: false
# 验证码长度
# 阿里云短信配置名称(对应 application-dev.yml 中 sms.blends 下的配置名)
sms-config-name: alibaba
# ---------- 短信模板配置 ----------
# 阿里云短信模板ID需在阿里云控制台申请并审核通过
# 模板内容示例:您的验证码为${code}${minutes}分钟内有效,请勿泄露给他人。
# 登录验证码模板ID
login-template-id: ${ALIYUN_SMS_LOGIN_TEMPLATE:SMS_XXXXXX}
# 注册验证码模板ID
register-template-id: ${ALIYUN_SMS_REGISTER_TEMPLATE:SMS_XXXXXX}
# ---------- 验证码配置 ----------
# 验证码长度(位数)
code-length: 6
# 验证码有效期(分钟)
code-expire-minutes: 5
# 同一手机号发送间隔(秒)
# ---------- 防刷策略配置 ----------
# 同一手机号发送间隔(秒),防止频繁发送
send-interval-seconds: 60
# 同一手机号每日发送上限
daily-limit-per-phone: 10
@ -282,13 +302,9 @@ h5:
minute-limit-per-ip: 5
# 同一IP每日发送上限
daily-limit-per-ip: 50
# ---------- 黑名单配置 ----------
# 黑名单封禁时长(分钟)
blacklist-minutes: 30
# 触发黑名单的验证失败次数
# 连续验证失败多少次后加入黑名单
blacklist-trigger-count: 5
# 阿里云短信配置名称对应sms.blends下的配置
sms-config-name: alibaba
# 短信模板ID - 登录
login-template-id: ''
# 短信模板ID - 注册
register-template-id: ''

View File

@ -254,48 +254,83 @@ backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/
### 3.4 短信服务(阿里云)
复用现有 `sms4j` 模块,配置阿里云:
复用现有 `sms4j` 模块(版本 3.3.5),集成阿里云短信服务。
#### 阿里云准备工作
| 步骤 | 操作 | 说明 |
|------|------|------|
| 1 | 开通短信服务 | [阿里云短信控制台](https://dysms.console.aliyun.com/) |
| 2 | 创建 AccessKey | 建议使用 RAM 子账号,仅授予 `AliyunDysmsFullAccess` 权限 |
| 3 | 申请短信签名 | 签名管理 → 添加签名,审核通过后使用 |
| 4 | 申请短信模板 | 模板管理 → 添加模板,需包含 `${code}` 变量 |
**短信模板示例:**
```
验证码为${code}${minutes}分钟内有效,请勿泄露给他人。
```
#### 阿里云配置application-dev.yml
```yaml
sms:
config-type: yaml
restricted: true
minute-max: 1
account-max: 30
blends:
# 配置名称 "alibaba" 与 h5.sms.sms-config-name 对应
alibaba:
supplier: alibaba
access-key-id: ${ALIYUN_SMS_ACCESS_KEY}
access-key-secret: ${ALIYUN_SMS_ACCESS_SECRET}
signature: 盘古教育
template-id: SMS_XXXXXX
# AccessKey ID阿里云控制台 - AccessKey管理
access-key-id: ${ALIYUN_SMS_ACCESS_KEY:您的AccessKeyId}
# AccessKey Secret
access-key-secret: ${ALIYUN_SMS_ACCESS_SECRET:您的AccessKeySecret}
# 短信签名(需审核通过)
signature: ${ALIYUN_SMS_SIGNATURE:您的短信签名}
```
#### 短信防刷配置application.yml
#### H5短信配置application.yml
```yaml
h5:
sms:
# 是否启用短信发送false时仅打印日志用于测试
# ---------- 基础配置 ----------
# 是否真正发送短信false时仅打印日志用于开发测试
enabled: false
# 验证码长度
code-length: 6
# 验证码有效期(分钟)
code-expire-minutes: 5
# 同一手机号发送间隔(秒)
send-interval-seconds: 60
# 同一手机号每日发送上限
daily-limit-per-phone: 10
# 同一IP每分钟发送上限
minute-limit-per-ip: 5
# 同一IP每日发送上限
daily-limit-per-ip: 50
# 黑名单封禁时长(分钟)
blacklist-minutes: 30
# 触发黑名单的验证失败次数
blacklist-trigger-count: 5
# 阿里云短信配置名称对应sms.blends下的配置
# 阿里云短信配置名称
sms-config-name: alibaba
# 短信模板ID - 登录
login-template-id: ''
# 短信模板ID - 注册
register-template-id: ''
# ---------- 短信模板配置 ----------
# 登录验证码模板ID阿里云控制台申请
login-template-id: ${ALIYUN_SMS_LOGIN_TEMPLATE:SMS_XXXXXX}
# 注册验证码模板ID
register-template-id: ${ALIYUN_SMS_REGISTER_TEMPLATE:SMS_XXXXXX}
# ---------- 验证码配置 ----------
code-length: 6
code-expire-minutes: 5
# ---------- 防刷策略配置 ----------
send-interval-seconds: 60
daily-limit-per-phone: 10
minute-limit-per-ip: 5
daily-limit-per-ip: 50
blacklist-minutes: 30
blacklist-trigger-count: 5
```
#### 环境变量配置(推荐)
生产环境建议使用环境变量,避免密钥泄露:
```bash
# 阿里云短信配置
export ALIYUN_SMS_ACCESS_KEY=LTAI5tXXXXXXXXXXXXXX
export ALIYUN_SMS_ACCESS_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
export ALIYUN_SMS_SIGNATURE=盘古教育
export ALIYUN_SMS_LOGIN_TEMPLATE=SMS_123456789
export ALIYUN_SMS_REGISTER_TEMPLATE=SMS_987654321
```
#### 防刷策略