docs: 更新H5接口文档,添加短信防刷配置说明
This commit is contained in:
parent
5fe9d1117f
commit
a47536315b
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
> 作者:湖北新华业务中台研发团队
|
||||
> 创建时间:2026-02-02
|
||||
> 版本:v1.0
|
||||
> 版本:v1.1
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -189,6 +189,8 @@
|
|||
```
|
||||
backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/
|
||||
├── h5/ # H5接口模块
|
||||
│ ├── config/
|
||||
│ │ └── H5SmsProperties.java # 短信防刷配置类
|
||||
│ ├── controller/
|
||||
│ │ ├── H5AuthController.java # 认证接口
|
||||
│ │ ├── H5MemberController.java # 会员信息接口
|
||||
|
|
@ -265,12 +267,75 @@ sms:
|
|||
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. 校验图形验证码
|
||||
2. 频率限制(60秒内不可重发)
|
||||
3. 生成6位数字验证码,5分钟有效
|
||||
4. 存入Redis:`h5:sms:{phone}:{type}`
|
||||
5. 调用阿里云API发送
|
||||
2. 检查手机号是否在黑名单
|
||||
3. 检查IP是否在黑名单
|
||||
4. 检查发送间隔(60秒)
|
||||
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 数据库设计
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue