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

View File

@ -265,16 +265,36 @@ warm-flow:
# 默认Authorization如果有多个token用逗号分隔 # 默认Authorization如果有多个token用逗号分隔
token-name: ${sa-token.token-name},clientid token-name: ${sa-token.token-name},clientid
--- # H5短信防刷配置 --- # H5短信配置阿里云
# ============================================================
# H5接口短信验证码配置
# 阿里云短信模板申请: https://dysms.console.aliyun.com/
# ============================================================
h5: h5:
sms: sms:
# 是否启用短信发送false时仅打印日志用于测试 # ---------- 基础配置 ----------
# 是否真正发送短信false时仅打印日志用于开发测试
# 生产环境必须设置为 true
enabled: false 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-length: 6
# 验证码有效期(分钟) # 验证码有效期(分钟)
code-expire-minutes: 5 code-expire-minutes: 5
# 同一手机号发送间隔(秒)
# ---------- 防刷策略配置 ----------
# 同一手机号发送间隔(秒),防止频繁发送
send-interval-seconds: 60 send-interval-seconds: 60
# 同一手机号每日发送上限 # 同一手机号每日发送上限
daily-limit-per-phone: 10 daily-limit-per-phone: 10
@ -282,13 +302,9 @@ h5:
minute-limit-per-ip: 5 minute-limit-per-ip: 5
# 同一IP每日发送上限 # 同一IP每日发送上限
daily-limit-per-ip: 50 daily-limit-per-ip: 50
# ---------- 黑名单配置 ----------
# 黑名单封禁时长(分钟) # 黑名单封禁时长(分钟)
blacklist-minutes: 30 blacklist-minutes: 30
# 触发黑名单的验证失败次数 # 连续验证失败多少次后加入黑名单
blacklist-trigger-count: 5 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 短信服务(阿里云) ### 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 ```yaml
sms: sms:
config-type: yaml
restricted: true
minute-max: 1
account-max: 30
blends: blends:
# 配置名称 "alibaba" 与 h5.sms.sms-config-name 对应
alibaba: alibaba:
supplier: alibaba supplier: alibaba
access-key-id: ${ALIYUN_SMS_ACCESS_KEY} # AccessKey ID阿里云控制台 - AccessKey管理
access-key-secret: ${ALIYUN_SMS_ACCESS_SECRET} access-key-id: ${ALIYUN_SMS_ACCESS_KEY:您的AccessKeyId}
signature: 盘古教育 # AccessKey Secret
template-id: SMS_XXXXXX access-key-secret: ${ALIYUN_SMS_ACCESS_SECRET:您的AccessKeySecret}
# 短信签名(需审核通过)
signature: ${ALIYUN_SMS_SIGNATURE:您的短信签名}
``` ```
#### 短信防刷配置application.yml #### H5短信配置application.yml
```yaml ```yaml
h5: h5:
sms: sms:
# 是否启用短信发送false时仅打印日志用于测试 # ---------- 基础配置 ----------
# 是否真正发送短信false时仅打印日志用于开发测试
enabled: 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 sms-config-name: alibaba
# 短信模板ID - 登录
login-template-id: '' # ---------- 短信模板配置 ----------
# 短信模板ID - 注册 # 登录验证码模板ID阿里云控制台申请
register-template-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
``` ```
#### 防刷策略 #### 防刷策略