Skip to content

🔐 验证码验证工具

📖 功能介绍

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发送间隔2m30m(30分钟)、2h(2小时)
limit-ipIP每日限制200表示不限制
limit-captcha每日发送限制50表示不限制
timeout过期时间5m30m(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

💡 使用建议

  1. 安全性建议

    • 合理设置发送间隔,防止频繁请求
    • 适当限制IP发送次数,防止批量发送
    • 控制验证失败次数,防止暴力破解
  2. 性能优化

    • 使用 Redis 集群提高可用性
    • 定期清理过期验证码
    • 监控验证码发送和验证情况
  3. 最佳实践

    • 验证码长度建议 4-6 位
    • 建议使用数字验证码
    • 关键操作需要二次验证

🔍 常见问题

  1. 验证码发送失败

    • 检查Redis连接配置
    • 确认是否超过发送限制
    • 验证IP是否被限制
  2. 验证码验证失败

    • 检查验证码是否过期
    • 确认验证失败次数是否超限
    • 验证输入格式是否正确