当前位置: 首页 > news >正文

使用cage工具包生成验证码

目录

  • 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…
图片来自网络


http://www.mrgr.cn/news/21132.html

相关文章:

  • RP2040 C SDK clocks时钟源配置使用
  • 嵌入式s3c2240: ADC
  • Flutter集成Firebase中的Realtime Analytics
  • C#读写锁与并发控制
  • 电脑桌面整理怎么弄?分享8款桌面整理软件,轻松拿捏桌面美化!
  • 【脚手架 第一篇章】介绍一下若依微服务版框架
  • 超级兔子与这三款恢复工具:性能对比与用户体验分析
  • 数学基础 -- 线性代数之矩阵正定性
  • 10款古方突破1800亿元,康缘药业发力,市场迎井喷式增长……
  • 2024.9.6 作业
  • 【简历】25届南京某一本JAVA简历:简历通过率还好,但是拿不到OFFER
  • Qt-布局管理
  • 太极八卦图时钟屏保 这个电脑屏保很有个性哦 你喜欢吗?
  • timm从本地加载预训练模型
  • Jmeter模拟用户登录时获取token如何跨线程使用?
  • leetcode:516 最长回文字序列 动态规划
  • 夫妻离婚对债务的约定是否对第三人有效?
  • [Android] [SnapdragonCamera] 单摄(横屏)阶段总结
  • GitHub每日最火火火项目(9.6)
  • Git 撤回commit