第一种方法:使用hutool生成图片验证码:
1.1 引入jar包:
<!-- 糊涂工具包 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.1.13</version>
</dependency>
1.2 在代码中生成图片验证码,以base64的方式传给前端,
// 生成图片验证码类
CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(111, 36);
// 获取图片验证码上的字符串(小写)
String lowerCaseCode = captcha.getCode().toLowerCase();
// 转化为base64f给前端
String imageBase = captcha.getImageBase64();
// 将字符串用md5加密当作key保存到redis中
String md5Image = DigestUtils.md5DigestAsHex(lowerCaseCode.getBytes());
// 保存到redis中,这里不做操作
// 组装数据返回前端
hashMap.put("imageBase", imageBase);
// 下次前端携带此参数我们从redis中查询
hashMap.put("md5Image", md5Image);
// 此数据在此只是展示,不要返回给前端
hashMap.put("lowerCaseCode", lowerCaseCode);
1.3 结果:
将base64转换为图片的网站,注意:前面需要加:data:image/png;base64, 逗号也是,地址
参考文章:文章地址
第二种方法:使用EasyCaptcha来生成图片验证码,官网地址:地址
2.1 引入jar包
<!-- 图片验证码 -->
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>1.6.2</version>
</dependency>
2.2 在代码中的应用
// 三个参数分别为宽、高、位数
// SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5); 数字验证码
ChineseCaptcha specCaptcha = new ChineseCaptcha(130, 48); // 汉字验证码
// 设置字体
// specCaptcha.setFont(new Font("Verdana", Font.PLAIN, 32)); // 有默认字体,可以不用设置
// 设置类型,纯数字、纯字母、字母数字混合
specCaptcha.setCharType(Captcha.TYPE_ONLY_NUMBER);
String verCode = specCaptcha.text().toLowerCase();
String codeBase = specCaptcha.toBase64();
hashMap.put("verCode", verCode);
hashMap.put("codeBase", codeBase);
2.3 结果:
hutool官网:地址