docs: 更新H5接口文档,添加短信防刷配置说明
This commit is contained in:
parent
5fe9d1117f
commit
a47536315b
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
> 作者:湖北新华业务中台研发团队
|
> 作者:湖北新华业务中台研发团队
|
||||||
> 创建时间:2026-02-02
|
> 创建时间:2026-02-02
|
||||||
> 版本:v1.0
|
> 版本:v1.1
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -189,6 +189,8 @@
|
||||||
```
|
```
|
||||||
backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/
|
backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/
|
||||||
├── h5/ # H5接口模块
|
├── h5/ # H5接口模块
|
||||||
|
│ ├── config/
|
||||||
|
│ │ └── H5SmsProperties.java # 短信防刷配置类
|
||||||
│ ├── controller/
|
│ ├── controller/
|
||||||
│ │ ├── H5AuthController.java # 认证接口
|
│ │ ├── H5AuthController.java # 认证接口
|
||||||
│ │ ├── H5MemberController.java # 会员信息接口
|
│ │ ├── H5MemberController.java # 会员信息接口
|
||||||
|
|
@ -265,12 +267,75 @@ sms:
|
||||||
template-id: SMS_XXXXXX
|
template-id: SMS_XXXXXX
|
||||||
```
|
```
|
||||||
|
|
||||||
短信验证码逻辑:
|
#### 短信防刷配置(application.yml)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
h5:
|
||||||
|
sms:
|
||||||
|
# 是否启用短信发送(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: ''
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 防刷策略
|
||||||
|
|
||||||
|
| 层级 | 策略 | 配置项 | 默认值 |
|
||||||
|
|------|------|--------|--------|
|
||||||
|
| 前置 | 图形验证码校验 | - | 必须 |
|
||||||
|
| 手机号 | 黑名单检查 | `blacklist-minutes` | 30分钟 |
|
||||||
|
| 手机号 | 发送间隔限制 | `send-interval-seconds` | 60秒 |
|
||||||
|
| 手机号 | 每日发送上限 | `daily-limit-per-phone` | 10条 |
|
||||||
|
| IP | 黑名单检查 | `blacklist-minutes` | 30分钟 |
|
||||||
|
| IP | 每分钟发送上限 | `minute-limit-per-ip` | 5条 |
|
||||||
|
| IP | 每日发送上限 | `daily-limit-per-ip` | 50条 |
|
||||||
|
| 验证 | 连续失败自动封禁 | `blacklist-trigger-count` | 5次 |
|
||||||
|
|
||||||
|
#### 验证码发送流程
|
||||||
|
|
||||||
1. 校验图形验证码
|
1. 校验图形验证码
|
||||||
2. 频率限制(60秒内不可重发)
|
2. 检查手机号是否在黑名单
|
||||||
3. 生成6位数字验证码,5分钟有效
|
3. 检查IP是否在黑名单
|
||||||
4. 存入Redis:`h5:sms:{phone}:{type}`
|
4. 检查发送间隔(60秒)
|
||||||
5. 调用阿里云API发送
|
5. 检查手机号每日上限
|
||||||
|
6. 检查IP每分钟上限
|
||||||
|
7. 检查IP每日上限
|
||||||
|
8. 业务校验(注册:手机号未注册;登录:手机号已注册)
|
||||||
|
9. 生成验证码并存入Redis
|
||||||
|
10. 更新各项计数器
|
||||||
|
11. 调用阿里云API发送(测试模式仅打印日志)
|
||||||
|
|
||||||
|
#### Redis Key 设计
|
||||||
|
|
||||||
|
| Key | 说明 | TTL |
|
||||||
|
|-----|------|-----|
|
||||||
|
| `h5:sms:code:{type}:{phone}` | 验证码 | 5分钟 |
|
||||||
|
| `h5:sms:daily:phone:{date}:{phone}` | 手机号每日计数 | 1天 |
|
||||||
|
| `h5:sms:minute:ip:{ip}` | IP每分钟计数 | 1分钟 |
|
||||||
|
| `h5:sms:daily:ip:{date}:{ip}` | IP每日计数 | 1天 |
|
||||||
|
| `h5:sms:blacklist:phone:{phone}` | 手机号黑名单 | 30分钟 |
|
||||||
|
| `h5:sms:blacklist:ip:{ip}` | IP黑名单 | 30分钟 |
|
||||||
|
| `h5:sms:fail:{phone}` | 验证失败计数 | 5分钟 |
|
||||||
|
|
||||||
### 3.5 数据库设计
|
### 3.5 数据库设计
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue