滑块验证码后端使用说明
李国平 2022/11/21 验证码
# 1、引入滑块验证码 jar
<dependency>
<groupId>com.ith.starter</groupId>
<artifactId>captcha-ith-boot-starter</artifactId>
</dependency>
# 2、修改 “bootstrap.yml”
在 web.jar 启动项目配置 “bootstrap.yml” 中 新增 “captcha-${spring.profiles.active}.yaml”
spring:
cloud:
nacos:
config:
namespace: ith-dev
file-extension: yaml
shared-configs:
- ith-service-redis-${spring.profiles.active}.yaml
- sentinel-${spring.profiles.active}.yaml
- zipkin-${spring.profiles.active}.yaml
- feign-${spring.profiles.active}.yaml
- weixin-${spring.profiles.active}.yaml
- jms-mq-${spring.profiles.active}.yaml
## 新增滑块验证码 配置文件如下
- captcha-${spring.profiles.active}.yaml
# “captcha-${spring.profiles.active}.yaml” 配置说明:
请将该配置添加到nacos 配置中心里(nacos 配置中心不支持 # 注释,注意去除注释)
aj:
captcha:
# 滑动验证,底图路径
jigsaw: classpath:images/jigsaw
pic-click: classpath:images/pic-click
# redis 缓存配置
cache-type: redis
# 验证码类型default两种都实例化。
type: default
# 右下角水印文字(可不填)
water-mark:
# 校验滑动拼图允许误差偏移量(默认5像素)
slip-offset: 5
# aes加密坐标开启或者禁用(true|false)
aes-status: true
# 滑动干扰项(0/1/2)
interference-options: 2
#点选字体样式 默认Font.BOLD
font-style: 1
#点选字体字体大小
font-size: 25
#历史数据清除开关
history-data-clear-enable: false
# 接口请求次数一分钟限制是否开启 true|false
req-frequency-limit-enable: false
# 验证失败5次,get接口锁定
req-get-lock-limit: 5
# 验证失败后,锁定时间间隔,s
req-get-lock-seconds: 360
# get接口一分钟内请求数限制
req-get-minute-limit: 30
# check接口一分钟内请求数限制
req-check-minute-limit: 60
# verify接口一分钟内请求数限制
req-verify-minute-limit: 60
# 4、使用方式1,通过注解进行验证码验证
使用 "@CaptchaValid" 注解只能在Controller 类接口方法上使用如下代码示例:
@ApiOperation(value = "管理员登录",notes = "管理员登录")
@PostMapping("/loginadmin")
@CaptchaValid // 只有通过滑块验证 该接口才会被调用否则直接拒绝
public Object authLoginAdmin(@RequestBody LoginDTO loginDTO) {
loginDTO.setSec(SecurityUtil.decryptRsaPwd(loginDTO.getSec()));
Result<?> loginAdmin = loginService.loginAdmin(loginDTO);
return loginAdmin;
}
# 5、使用方式2,通过方法进行验证码验证
@Autowired
private CaptchaValidService captchaValidService;
@ApiOperation(value = "管理员登录",notes = "管理员登录")
@PostMapping("/loginadmin")
public Object authLoginAdmin(@RequestBody LoginDTO loginDTO,HttpServletRequest request) {
// 滑块验证码验证
ResponseModel verification = captchaValidService.verification(request);
if (verification.isSuccess() == false) {
// 验证不通过 返回拒绝状态
return ResultUtils.error().setMsg(verification.getRepMsg());
}
loginDTO.setSec(SecurityUtil.decryptRsaPwd(loginDTO.getSec()));
Result<?> loginAdmin = loginService.loginAdmin(loginDTO);
return loginAdmin;
}