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等),以便后面进行验证码认证操作.