使用EasyCaptcha生成多类型验证码

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 img
Captcha.FONT_2 img
Captcha.FONT_3 img
Captcha.FONT_4 img
Captcha.FONT_5 img
Captcha.FONT_6 img
Captcha.FONT_7 img
Captcha.FONT_8 img
Captcha.FONT_9 img
Captcha.FONT_10 img

# 生成数字计算验证码

@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();
}
上次更新: 5 个月前