Skip to content

验证码验证拦截器 🔒

功能概述 📝

验证码验证拦截器用于对接口进行验证码校验,支持多种验证方式和场景,有效防止恶意请求和自动化攻击。

功能特性 ✨

验证方式

  • 🖼️ 图片验证码:支持自定义长度和复杂度

核心功能

  • ✅ 多种验证码类型支持
  • 🔐 业务场景隔离
  • 🎯 灵活的参数获取方式
  • ⏱️ 验证码过期控制
  • 🚦 请求限流保护

配置说明 ⚙️

基础配置参数

参数名类型必填默认值说明
enabledbooleanfalse是否启用验证码拦截器
rulesarray-验证规则配置列表

验证规则配置(rules)

参数名类型必填默认值说明
generate-urlsarray-生成验证码的接口地址列表
verify-urlsarray-需要验证码校验的接口地址列表
business-keystring-业务标识,用于隔离不同业务验证码
parameter-typestring-参数获取类型:header(请求头)、query(查询参数)、body(请求体)
code-field-namestring-验证码临时ID参数名
value-field-namestring-验证码值参数名
expireDuration-验证码有效期,如30m表示30分钟
image-typestring-类型;string 数字字母,number 数字,math 数学,random 随机
image-widthnumber-图片宽度
image-heightnumber-图片高度
image-lengthnumber-图片长度
rate-limiterbooleanfalse是否启用限流保护(主要处理触发限流后,可以通过验证码恢复)

使用示例 📝

1. 常规图片验证码

yaml
gateway:
  filter:
    captcha:
      enabled: true #是否启用,默认false
      rules:
      - generate-urls: 
        - /demo/captcha  # 生成验证码接口
        verify-urls: 
        - /demo/login    # 需要验证的接口
        business-key: login  # 业务标识
        parameter-type: body # 参数获取方式
        code-field-name: code  # 验证码ID字段
        value-field-name: captcha  # 验证码值字段
        expire: 5m  # 5分钟有效期
        image-width: 150 #图片宽度
        image-height: 70 #图片高度
        image-length: 5 #验证码长度

验证码接口说明

  1. 接口返回数据格式:
json
{
    "code": 0,
    "successful": true,
    "msg": null,
    "data": {
        "captcha": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAABGCAIAAAChXfqaAAAaOUlEQVR4nOxcd3hUVdo/d",
        "code": "0076c56f3b374350ac659cd236ad0052"
    },
    "encrypt": false
}
  1. 验证接口请求参数:
json
{
    "accountNo": "admin",
    "password": "123456",
    "code": "88e8d3552ed0d2b8467bc5e497614e69",
    "captcha": "4myn"
}

⚠️ 注意事项

  1. 安全配置

    • 验证码接口需要合理配置权限
    • 验证码有效期建议5分钟以内
    • 建议开启限流保护机制
  2. 接口要求

    • 自定义验证接口必须支持POST请求
    • 必须使用JSON格式的请求体
    • 需要正确处理超时情况
  3. 第三方服务

    • 提前申请相关密钥信息
    • 正确配置服务地域
    • 做好异常处理和降级方案
  4. 性能优化

    • 合理设置验证码复杂度
    • 适当配置限流阈值
    • 监控验证码服务性能

🔗 相关链接