EasyCaptcha-快速生成图像验证码

EasyCaptcha-快速生成图像验证码

EasyCaptcha可以快速生成各种类型的Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。
GitHub项目:https://github.com/whvcse/EasyCaptcha

验证码验证码验证码
验证码验证码验证码

算术类型:

验证码验证码验证码

中文类型:

验证码验证码验证码

内置字体:

验证码验证码验证码

快速使用:

Maven依赖

<!-- 验证码easy-captcha -->
<dependency>
   <groupId>com.github.whvcse</groupId>
   <artifactId>easy-captcha</artifactId>
   <version>1.6.2</version>
</dependency>

使用方法

// png类型
SpecCaptcha captcha = new SpecCaptcha(130, 48,5);
// gif类型
GifCaptcha captcha = new GifCaptcha(130, 48);
// 算数类型验证码
ArithmeticCaptcha captcha = new ArithmeticCaptcha(130, 48);
// 中文类型
ChineseCaptcha captcha = new ChineseCaptcha(130, 48);
// 几位数运算,默认为两位
captcha.setLen(2);
// 获取运算的公式:3+2=?
captcha.getArithmetixcString();
// 获取运算的结果:5
String value = captcha.text();
String key = UuidUtil.createUuid();
// 存入redis并设置过期时间为5分钟
RedisUtil.set(key, value, 600);
HashMap<String, String> captchaMap = new HashMap<String, String>(2);
captchaMap.put("captchaKey", key);
captchaMap.put("image", captcha.toBase64());
// 将key和验证码base64返回给前端
return Result.success(captchaMap);

AJAX 刷新验证码

function refreshcode(obj)
{
  obj.src="/captcha?id="+Math.random();
};
<img src="/captcha" width="105px" height="45px" onclick="refreshcode(this)" />

在SpringBoot中

/**
 * @description: TODO
 * @author: Zhaotianyi
 * @time: 2021/5/10 15:55
 */
@Api(tags = {"图片验证码管理"})
@Controller
public class CaptchaController {
    @Autowired
    private ImgValidService imgValidService;

    @ResponseBody
    @GetMapping("/captcha")
    public Result captcha() throws Exception {
        SpecCaptcha specCaptcha = new SpecCaptcha(128, 48, 5);
        String verCode = specCaptcha.text().toLowerCase();
        String MD5verCode = new Md5Hash(verCode).toHex();

        imgValidService.add(MD5verCode,verCode);
        return ResultBuilder.successResult(new CaptchaResp(specCaptcha.toBase64(),MD5verCode));
    }
}

其中ImgValidService 为验证码保存业务类, 将其生成的验证码的Md5码和真实验证码内容保存 至持久化工具(如Nosql,Redis,MongoDb等),以便后面进行验证码认证操作.