主题
二次验证拦截器^1.4.0
WARNING
对接口调用之前进行二次验证,验证通过后,才可以继续调用接口,验证失败直接返回错误提示。
使用场景
- 操作二次验证:对于某些安全性比较高的功能,操作时需要验证动态口令,验证通过后才可以进行实际的读写请求。
- 数据权限验证:对于某些接口需要验证用户是否有数据操作权限。
配置
参数说明
配置后,对需要验证的地址进行验证拦截
enabled
:是否启用拦截器,默认不启用false
items
:规则列表,可以配置多个urls
:需要验证的接口地址parameter-type
:获取参数类型,header
请求头,query
查询参数,body
verify-uri
:验证uri地址verify-timeout
:验证超时时间,默认1分钟,可以配置秒,分钟,小时,天,例如:PT30M
30分钟,PT2H
2小时,参考说明verify-params
:需要验证传输参数信息(key value方式),定义后,会将所有的参数传入接口地址business-key
^1.5.0:业务key,默认bearer
,当需要区分业务时,需要配置,通过业务key进行隔离lock-enabled
^1.5.0:锁定是否启用,默认false
,启用后,会控制连续错误次数限制lock-interval
^1.5.0:锁定间隔时间(多长时间内连续输错次数),默认30分钟,可以配置秒,分钟,小时,天,例如:PT30M
30分钟,PT2H
2小时,参考说明lock-count
^1.5.0:锁定触发次数,默认5
lock-expire
^1.5.0:锁定时间,默认30分钟,可以配置秒,分钟,小时,天,例如:PT30M
30分钟,PT2H
2小时,参考说明
示例
网关配置
yaml
wueasy:
gateway:
filter:
captcha:
enabled: true #是否启用,默认false
items:
- urls:
- /demo/login #需要验证图片验证码接口地址
parameter-type: body #验证码取值参数类型
verify-uri: lb://web1/verifyCaptcha #负载均衡方式调用自定义接口
#verify-uri: http://127.0.0.1:8081/verifyCaptcha #指定接口地址方式调用自定义接口
verify-params: #需要验证传输的参数
code : code
captcha : captcha
特殊说明:需要注意接口登录权限的处理
验证接口
- 登录接口
/demo/login
传入验证 - 自定义验证验证码接口,必须使用
body
接收参数,并且是post
请求 - 验证验证码代码(自定义逻辑处理)
java
@PostMapping(value= "/verifyCaptcha",produces = MediaType.APPLICATION_JSON_VALUE)
public Mono<ResultVo<Void>> verifyCaptcha(@RequestBody @Valid DataMap map)
{
//TODO 自定义处理
System.err.println("接收到参数:"+JsonHelper.toJsonString(map));
System.err.println("接收到用户信息:"+JsonHelper.toJsonString(UserHelper.getSystemParameter()));
return Mono.just(ResultVo.ok());
}
- 登录接口
http://127.0.0.1:8080/demo/login
传入附加验证码参数 - 登录接口传入数据
json
{
"accountNo":"admin",
"password":"123456",
"code":"88e8d3552ed0d2b8467bc5e497614e69", //验证码临时code
"captcha":"4myn" //验证码值
}