外观
验证码验证拦截器 🔒
功能概述 📝
验证码验证拦截器用于对接口进行验证码校验,支持多种验证方式和场景,有效防止恶意请求和自动化攻击。
功能特性 ✨
验证方式
- 🖼️ 图片验证码:支持自定义长度和复杂度
核心功能
- ✅ 多种验证码类型支持
- 🔐 业务场景隔离
- 🎯 灵活的参数获取方式
- ⏱️ 验证码过期控制
- 🚦 请求限流保护
配置说明 ⚙️
基础配置参数
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
enabled | boolean | 否 | false | 是否启用验证码拦截器 |
rules | array | 是 | - | 验证规则配置列表 |
验证规则配置(rules)
参数名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
generate-urls | array | 否 | - | 生成验证码的接口地址列表 |
verify-urls | array | 是 | - | 需要验证码校验的接口地址列表 |
business-key | string | 否 | - | 业务标识,用于隔离不同业务验证码 |
parameter-type | string | 是 | - | 参数获取类型:header (请求头)、query (查询参数)、body (请求体) |
code-field-name | string | 否 | - | 验证码临时ID参数名 |
value-field-name | string | 否 | - | 验证码值参数名 |
expire | Duration | 否 | - | 验证码有效期,如30m表示30分钟 |
image-type | string | 否 | - | 类型;string 数字字母,number 数字,math 数学,random 随机 |
image-width | number | 否 | - | 图片宽度 |
image-height | number | 否 | - | 图片高度 |
image-length | number | 否 | - | 图片长度 |
rate-limiter | boolean | 否 | false | 是否启用限流保护(主要处理触发限流后,可以通过验证码恢复) |
使用示例 📝
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 #验证码长度
验证码接口说明
- 接口返回数据格式:
json
{
"code": 0,
"successful": true,
"msg": null,
"data": {
"captcha": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAABGCAIAAAChXfqaAAAaOUlEQVR4nOxcd3hUVdo/d",
"code": "0076c56f3b374350ac659cd236ad0052"
},
"encrypt": false
}
- 验证接口请求参数:
json
{
"accountNo": "admin",
"password": "123456",
"code": "88e8d3552ed0d2b8467bc5e497614e69",
"captcha": "4myn"
}
⚠️ 注意事项
安全配置
- 验证码接口需要合理配置权限
- 验证码有效期建议5分钟以内
- 建议开启限流保护机制
接口要求
- 自定义验证接口必须支持POST请求
- 必须使用JSON格式的请求体
- 需要正确处理超时情况
第三方服务
- 提前申请相关密钥信息
- 正确配置服务地域
- 做好异常处理和降级方案
性能优化
- 合理设置验证码复杂度
- 适当配置限流阈值
- 监控验证码服务性能