验证码模块:图形验证码
简介
continew-starter-captcha-graphic
是 ContiNew Starter 验证码模块针对图形验证码的默认处理,底层基于 Easy Captcha。
xml
<dependency>
<groupId>top.continew</groupId>
<artifactId>continew-starter-captcha-graphic</artifactId>
</dependency>
主要特性
- 版本锁定:涉及依赖已进行版本锁定,使用时无需配置版本
- 默认配置,针对验证码内容长度、高度、字体等提供默认配置,并适配 JDK 17
- 提供四种验证支持方式
- 算术验证(数学计算出正确的值)
- 中文验证(正确输入图片的中文汉字)
- 中文闪图验证(正确输入闪图中的中文汉字)
- 英文验证(正确输入图片中的英文字母)
- 英文闪图验证(正确输入闪图中的英文字母)
配置示例
配置详情请查看:top.charles7c.continew.starter.captcha.graphic.autoconfigure.GraphicCaptchaProperties
yaml
--- ### 验证码配置
continew-starter:
captcha:
## 图形验证码
graphic:
enabled: true
# 类型(默认:SPEC(英文验证))
# ARITHMETIC:算术验证
# CHINESE:中文验证
# CHINESE_GIF:中文闪图验证
# SPEC:英文验证
# GIF:英文闪图验证
type: SPEC
# 图片中内容长度(默认:4)
length: 4
# 图片中内容高度(默认:111)
width: 111
# 图片中内容宽度(默认:36)
height: 36
# 字体大小(默认:25)
fontSize: 25
获取验证码
可参考 top.charles7c.continew.admin.webapi.common.CaptchaController
类中 getImageCaptcha
方法
返回参数
json
{
"uuid": "090b9a2c-1691-4fca-99db-e4ed0cff362f",
"img": "验证码图片(Base64编码,带图片格式:data:image/gif;base64)"
}
接口示例
java
// 项目中注入 GraphicCaptchaProperties 验证码配置类使用
private final GraphicCaptchaProperties graphicCaptchaProperties;
@GetMapping("/get")
public CaptchaResp get() {
Captcha captcha = graphicCaptchaProperties.getCaptcha();
// uuid 作为后续校验验证码的标识
String uuid = IdUtil.fastUUID();
String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_KEY_PREFIX, uuid);
RedisUtils.set(captchaKey, captcha.text(), Duration.ofMinutes(captchaProperties.getExpirationInMinutes()));
return CaptchaResp.builder().uuid(uuid).img(captcha.toBase64()).build();
}
校验验证码
请求参数
json
{
"uuid": "090b9a2c-1691-4fca-99db-e4ed0cff362f",// 验证码标识
"captcha": "ABCD"
}
接口示例
java
@PostMapping("/check")
public void check(@RequestBody RequestBody body) {
String captchaKey = RedisUtils.formatKey(CacheConstants.CAPTCHA_KEY_PREFIX, body.getUuid());
String captcha = RedisUtils.get(captchaKey);
ValidationUtils.throwIfBlank(captcha, "验证码已失效");
RedisUtils.delete(captchaKey);
ValidationUtils.throwIfNotEqualIgnoreCase(body.getCaptcha(), captcha, "验证码错误");
}
核心依赖
依赖 | 描述 |
---|---|
continew-starter-core | |
nashorn-core | JS 引擎(一个纯编译的 JavaScript 引擎) |
easy-captcha | Easy Captcha(Java 图形验证码,支持 gif、中文、算术等类型,可用于 Java Web、JavaSE 等项目) |