spring boot验证码
验证码在实际工作中还是经常会使用上的。所以,在这儿,我也先来一个最简单的验证码,在为我也还是一个初学java的小白,有好多东东都还不是很了解。希望大家多多指教
1、引入依赖,这个不用多说,想必大家都懂。
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-captcha</artifactId><version>5.8.31</version></dependency>
2、在控制器中使用,在代码中,我就加一些注释作为讲解吧
@GetMapping("/getCode")
/*** 返回的是图片流*/
public ResponseEntity<byte[]> getCode() throws IOException {//配置验证码图片的宽度,以及验证码字符的个数,还有它的模糊程度(也就是干扰线),这儿设置4个字符,没有干扰线LineCaptcha captcha = new LineCaptcha(130, 40 , 4 , 0);//配置只有纯数字 1到9captcha.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,将来需要结合当前生成验证码结合起来//把它们存到缓存中,这样,前端发送过后就可以拿来做比较//这一段的代码我还没学会,所以我现在也没写出来//我在这儿先留个空,现在还在学习中……//生成uuidString uuid = UUID.randomUUID().toString().replace("-", "");redisClass.setString(uuid , captchaCode);//这儿就是设置返回体以及返回的内容(最后返回的是一个图片的文件流,直接在浏览器访问看到是一个图片)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.set("uuid" , uuid);//uuid返回响应头给前端headers.setDate("Expires", 0);byte[] b = outputStream.toByteArray();return new ResponseEntity<>(b, headers, HttpStatus.OK);
}