欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

微服务系列之SpringBoot基础:图片验证码kaptcha框架的集成

时间:2023-04-25
SpringBoot 图片验证码kaptcha框架的集成 文章目录

SpringBoot 图片验证码kaptcha框架的集成一、添加依赖二、编写配置文件三、定义一个接口用来获取验证码图片的数据,然后把图片验证码的值保存在session中四、测试总结


一、添加依赖

com.github.penggle kaptcha 2.3.2

二、编写配置文件

@Configurationpublic class KaptchaConfig { @Bean public DefaultKaptcha getDefaultKaptcha(){ DefaultKaptcha defaultKaptcha=new DefaultKaptcha(); Properties properties=new Properties(); //是否有边框 properties.setProperty(Constants.KAPTCHA_BORDER,"yes"); //验证码文本颜色 properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR,"red"); //验证码图片宽度 properties.setProperty(Constants.KAPTCHA_IMAGE_WIDTH,"180"); //验证码图片高度 properties.setProperty(Constants.KAPTCHA_IMAGE_HEIGHT,"80"); //文本字符大小 properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE,"39"); //验证码session的值 properties.setProperty(Constants.KAPTCHA_SESSION_CONFIG_KEY,"kaptchaCode"); //验证码文本长度 properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH,"4"); //字体 properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_NAMES, "宋体,楷体,微软雅黑"); Config config=new Config(properties); defaultKaptcha.setConfig(config); return defaultKaptcha; } }

三、定义一个接口用来获取验证码图片的数据,然后把图片验证码的值保存在session中

@RestControllerpublic class KaphtchaController { @Autowired private DefaultKaptcha defaultKaptcha; @RequestMapping("/imageVerification") public void defaultKaptcha(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { byte[] captchaChallengeAsJpeg = null; ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream(); try { // 生产验证码字符串并保存到session中,分布式环境存redis中 String createText = defaultKaptcha.createText(); httpServletRequest.getSession().setAttribute("vrifyCode", createText); // 使用生产的验证码字符串返回一个BufferedImage对象并转为byte写入到byte数组中 BufferedImage challenge = defaultKaptcha.createImage(createText); ImageIO.write(challenge, "jpg", jpegOutputStream); } catch (IllegalArgumentException e) { httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND); return; } // 定义response输出类型为image/jpeg类型,使用response输出流输出图片的byte数组 captchaChallengeAsJpeg = jpegOutputStream.toByteArray(); httpServletResponse.setHeader("Cache-Control", "no-store"); httpServletResponse.setHeader("Pragma", "no-cache"); httpServletResponse.setDateHeader("Expires", 0); httpServletResponse.setContentType("image/jpeg"); ServletOutputStream responseOutputStream = httpServletResponse.getOutputStream(); responseOutputStream.write(captchaChallengeAsJpeg); responseOutputStream.flush(); responseOutputStream.close(); }}

四、测试

地址:http://localhost:8080/imageVerification/


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。