使用EasyCaptcha生成多类型验证码
cv大魔王 2022-05-15 EasyCaptcha 分享
Java图形验证码,支持gif、中文、算术等类型,效果展示如下
算术类型:
中文类型:
内置字体:
# 依赖引入
<dependency>
<groupId>com.pig4cloud.plugin</groupId>
<artifactId>captcha-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
# 基本使用
在SpringBoot项目中一般生成图片后,转换成base64格式的字符串,前端直接在img标签的src设置返回的base64字符串即可展示图片,下面展示算数类型的验证码是如何生成的。
@Slf4j
@RestController
@RequestMapping("/aoi/captcha")
public class CaptchaController {
@GetMapping
public String getCode() {
SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
String verCode = specCaptcha.text().toLowerCase();
log.info("生成的验证码结果为:{},在项目中应该将结果保存到Redis中", verCode);
// 将base64返回给前端
return specCaptcha.toBase64();
}
}
# 自定义验证码类型、字体
@GetMapping
public String getCode() throws IOException, FontFormatException {
SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
String verCode = specCaptcha.text().toLowerCase();
log.info("生成的验证码结果为:{},在项目中应该将结果保存到Redis中", verCode);
// 设置字体
specCaptcha.setFont(Captcha.FONT_1); // 有默认字体,可以不用设置
// 设置类型,纯数字、纯字母、字母数字混合
specCaptcha.setCharType(Captcha.TYPE_ONLY_NUMBER);
// 将base64返回给前端
return specCaptcha.toBase64();
}
# 验证码字符类型
类型 | 描述 |
---|---|
TYPE_DEFAULT | 数字和字母混合 |
TYPE_ONLY_NUMBER | 纯数字 |
TYPE_ONLY_CHAR | 纯字母 |
TYPE_ONLY_UPPER | 纯大写字母 |
TYPE_ONLY_LOWER | 纯小写字母 |
TYPE_NUM_AND_UPPER | 数字和大写字母 |
# 内置字体
字体 | 效果 |
---|---|
Captcha.FONT_1 | ![]() |
Captcha.FONT_2 | ![]() |
Captcha.FONT_3 | ![]() |
Captcha.FONT_4 | ![]() |
Captcha.FONT_5 | ![]() |
Captcha.FONT_6 | ![]() |
Captcha.FONT_7 | ![]() |
Captcha.FONT_8 | ![]() |
Captcha.FONT_9 | ![]() |
Captcha.FONT_10 | ![]() |
# 生成数字计算验证码
@GetMapping
public String getCode() {
ArithmeticCaptcha captcha = new ArithmeticCaptcha(130, 48);
captcha.setLen(3); // 几位数运算,默认是两位
captcha.getArithmeticString(); // 获取运算的公式:3+2=?
String code = captcha.text();// 获取运算的结果:5
log.info("生成的验证码结果为:{},在项目中应该将结果保存到Redis中", code);
// 将base64返回给前端
return captcha.toBase64();
}
评论区
暂无评论~~