主题切换
🔐 验证码验证工具
📖 功能介绍
WARNING
验证码验证工具专门用于解决通用验证码验证安全问题,适用于短信验证码、邮箱验证码等场景。
✨ 核心特性
特性 | 说明 | 默认值 |
---|---|---|
发送间隔 | 两次发送之间的最小时间间隔 | 2分钟 |
IP限制 | 同一IP每天最大发送次数 | 20次 |
发送限制 | 单个账号每天最大发送次数 | 5次 |
有效期 | 验证码的最大有效时间 | 5分钟 |
验证次数 | 最大验证失败次数 | 5次 |
🛠️ API接口
工具类
com.wueasy.cloud.web.util.CaptchaHelper
java
/**
* 保存验证码
* @author: fallsea
* @param key 手机号码或邮箱,作为唯一标识
* @param captcha 验证码内容
* @param ip 客户端IP地址
*/
public static void save(String key, String captcha, String ip);
/**
* 验证码有效性检查
* @author: fallsea
* @param key 手机号码或邮箱,作为唯一标识
* @param captcha 待验证的验证码
* @throws RuntimeException 验证失败时抛出异常
*/
public static void check(String key, String captcha);
⚙️ Redis配置
连接配置
yaml
spring:
data:
redis:
database: 0
host: 127.0.0.1
port: 6379
password: 123456
timeout: 30000
lettuce:
pool:
# 最大连接数,-1表示无限制
max-active: 100
# 最大等待时间,-1表示无限制
max-wait: -1
# 最大空闲连接
max-idle: 10
# 最小空闲连接
min-idle: 0
🔧 验证码配置
参数说明
参数 | 说明 | 默认值 | 示例 |
---|---|---|---|
interval | 发送间隔 | 2m | 30m(30分钟)、2h(2小时) |
limit-ip | IP每日限制 | 20 | 0表示不限制 |
limit-captcha | 每日发送限制 | 5 | 0表示不限制 |
timeout | 过期时间 | 5m | 30m(30分钟)、2h(2小时) |
max-use-count | 最大失败次数 | 5 | - |
配置示例
yaml
wueasy:
captcha:
# 验证码发送间隔
interval: 2m
# IP每日发送限制
limit-ip: 20
# 每日验证码发送限制
limit-captcha: 5
# 验证码有效期
timeout: 5m
# 最大验证失败次数
max-use-count: 5
💡 使用建议
安全性建议
- 合理设置发送间隔,防止频繁请求
- 适当限制IP发送次数,防止批量发送
- 控制验证失败次数,防止暴力破解
性能优化
- 使用 Redis 集群提高可用性
- 定期清理过期验证码
- 监控验证码发送和验证情况
最佳实践
- 验证码长度建议 4-6 位
- 建议使用数字验证码
- 关键操作需要二次验证
🔍 常见问题
验证码发送失败
- 检查Redis连接配置
- 确认是否超过发送限制
- 验证IP是否被限制
验证码验证失败
- 检查验证码是否过期
- 确认验证失败次数是否超限
- 验证输入格式是否正确