目录
- 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.HttpSessionpublic 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…