目录
- 1. 导入依赖
- 2. 控制类
- 3. 测试
1. 导入依赖
<!-- 验证码工具 -->
<dependency>
<groupId>com.github.cage</groupId>
<artifactId>cage</artifactId>
<version>1.0</version>
</dependency>
2. 控制类
@RestController
@RequestMapping("captcha")
public class CaptchaController {
private final Cage cage = new GCage();
//captcha/getCaptcha
@RequestMapping("getCaptcha")
//因为使用的是springboot3,所以这里导入的HttpSession一定是jakarta.servlet.http.HttpSession
public String getCaptcha(HttpSession session){
//使用 getTokenGenerator().next() 方法生成一个新的验证码字符串
String captcha = cage.getTokenGenerator().next();
//将验证码保存到session中
session.setAttribute("captcha",captcha);
//打印验证码
System.out.println("captcha:"+captcha);
//生成验证码图片
byte[] image = cage.draw(captcha);
//将图片转换为Base64编码返回
return Base64.getEncoder().encodeToString(image);
}
}
3. 测试
如果直接访问http://localhost:8080/captcha/getCaptcha,会返回一个验证码图片(如下图),但是图片无法正常显示,因为浏览器默认不识别Base64编码的图片,所以需要使用工具进行测试。
使用Postman工具进行测试,将返回的Base64编码数据粘贴到图片转换工具中,即可得到验证码图片。
注意:postman该功能只能在登录情况下使用,否则找不到该功能。
将以下代码添加到postman的测试脚本中,即可实现Base64编码的图片显示。
//检查响应的Content-Type是否为JSON
if (pm.response.headers.get("Content-Type").includes("application/json")) {
//如果是JSON,则解析响应
const jsonData = pm.response.json();
//你的JSON处理逻辑
} else {
//如果不是JSON,则直接处理响应文本
const base64String = pm.response.text();
//你的Base64处理逻辑
const template =`
<img src="data:image/jpeg;base64,${base64String}"alt="Base64Image"/>`;
pm.visualizer.set(template);
}
测试结果如下:
over…