spring boot验证码

验证码在实际工作中还是经常会使用上的。所以,在这儿,我也先来一个最简单的验证码,在为我也还是一个初学java的小白,有好多东东都还不是很了解。希望大家多多指教

1、引入依赖,这个不用多说,想必大家都懂。

xml 复制代码
<dependency>
     <groupId>cn.hutool</groupId>
     <artifactId>hutool-captcha</artifactId>
     <version>5.8.31</version>
 </dependency>

2、在控制器中使用,在代码中,我就加一些注释作为讲解吧

java 复制代码
@GetMapping("/getCode")
/**
 * 返回的是图片流
 */
public ResponseEntity<byte[]> getCode() throws IOException {
    //配置验证码图片的宽度,以及验证码字符的个数,还有它的模糊程度(也就是干扰线),这儿设置4个字符,没有干扰线
    LineCaptcha captcha = new LineCaptcha(130, 40  , 4 , 0);
    //配置只有纯数字 1到9
    captcha.setGenerator(new RandomGenerator("123456789" , 4));
    //配置背景颜色
    captcha.setBackground(Color.pink);
    //配置字体
    captcha.setFont(new Font("微软雅黑", Font.BOLD, 18));
    //这儿就是生成验证码了
    String captchaCode = captcha.getCode();
    //其实,到这儿,验证码已配置完成,大家可以打印下 captchaCode 是可以出来4个字符的字符串的。

    //下面两行是生成图片的文件流
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    ImageIO.write(captcha.getImage() , "png" , outputStream);


    //在这中间还有一串的代码
    //那就是还需要生成唯一的uuid,将来需要结合当前生成验证码结合起来
    //把它们存到缓存中,这样,前端发送过后就可以拿来做比较
    //这一段的代码我还没学会,所以我现在也没写出来
    //我在这儿先留个空,现在还在学习中......


    //这儿就是设置返回体以及返回的内容(最后返回的是一个图片的文件流,直接在浏览器访问看到是一个图片)
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(org.springframework.http.MediaType.IMAGE_PNG);
    headers.set("Cache-Control", "no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
    headers.setPragma("no-cache");
    headers.setDate("Expires", 0);

    byte[] b = outputStream.toByteArray();
    return new ResponseEntity<>(b, headers, HttpStatus.OK);
}
相关推荐
RuoyiOffice几秒前
SpringBoot3+Vue3 企业 AI 工作流:Tinyflow 画布、LLM 节点与在线试跑怎么落地
spring boot·大模型·vue3·agent·ai工作流·ruoyi office·tinyflow
梦里寻码3 分钟前
从 0 到 1 用 NestJS + LangChain 搭一套可售卖的 SaaS AI 客服:挂件一行代码接入,知识库秒变 SEO 帮助中心
前端·后端·github
imDwAaY5 分钟前
程序为什么会卡在死锁里?从四个必要条件到预防与解除
后端·操作系统
Bazingga7 分钟前
知识注入的两条路:RAG知识库与Skills蒸馏
后端
薛之谦_8 分钟前
JAVA 多线程编程:从基础原理到实战应用
java·开发语言
LMT_Lanmantech9 分钟前
Creo许可降本增效:不增购,也能让现有许可发挥更大价值
java·大数据·开发语言
QQ14220784499 分钟前
基于 Flask 的「自动任务控制台」设计与踩坑实录
后端·python·flask
Bazingga11 分钟前
中文提问,能检到英文文档吗?——一次跨语言RAG检索五语种实测
后端
Shaoshing12 分钟前
Serializable
java
对象存储与RustFS14 分钟前
用 warp 压测 S3 兼容存储,十分钟跑出一份可复现的基准报告
后端·云原生·性能优化