项目技术点|spring boot项目中验证码功能实现

【项目技术点|spring boot项目中验证码功能实现】写spring boot项目登录功能是,验证码功能肯定是不能少的,这里将介绍一个工具来生成二维码,kaptcha

Kaptcha使用步骤
    • 导入jar包
    • 编写Kaptcha配置类
    • 生成随机字符串和验证码图片

导入jar包
com.github.penggle kaptcha 2.3.2

编写Kaptcha配置类
  • 首先在配置类包下编写Kaptcha配置类
@Configuration public class KapthchaConfig { @Bean public Producer kaptchaProducer(){ //用于设置验证码具体细节 Properties properties = new Properties(); //设置验证码图片宽度 properties.setProperty("kaptcha.image.width", "100"); //设置验证码图片高度 properties.setProperty("kaptcha.image.height", "40"); //设置验证码文字大小 properties.setProperty("kaptcha.textproducer.font.size", "32"); //设置验证码图片颜色 properties.setProperty("kaptcha.textproducer.font.color", "0,0,0"); //设置验证码文字内容 properties.setProperty("kaptcha.textproducer.char.string", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYAZ"); //设置生成随机字符数量 properties.setProperty("kaptcha.textproducer.char.length", "4"); //图片干扰设置 properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise"); //Kaptcha实现类 DefaultKaptcha kaptcha = new DefaultKaptcha(); //将properties配置封装到Config对象中 Config config = new Config(properties); //将config传入实现类 kaptcha.setConfig(config); return kaptcha; } }

生成随机字符串和验证码图片
  • 配置类写完后就可以直接使用生成验证码了,核心是两个方法,createText()和createImage(String text) ,前者是随机生成验证码字符串,后者是将前者生成的字符串对象作为参数生成验证码图片,最后将图片通过输出流和imageIO写回浏览器即可
Controller层
@Controller public class KaptController { //注入生成验证码所需要的Producer对象 @Autowired private Producer kaptcha; /** * 获取验证码 */ @RequestMapping("/kaptcha") public void getKpthcha(HttpServletResponse response, HttpSession session){ //生成验证码内容 String text = kaptcha.createText(); //生成验证码图片 BufferedImage image = kaptcha.createImage(text); //将文字保存进session中 session.setAttribute("code",text); //将图片写回流中,输出给浏览器 response.setContentType("image/png"); try { ServletOutputStream os = response.getOutputStream(); ImageIO.write(image,"png",os); } catch (IOException e) { e.printStackTrace(); } } }

  • 浏览器请求该方法的结果
    项目技术点|spring boot项目中验证码功能实现
    文章图片
到这里,Kaptcha的简单使用就介绍完毕了。

    推荐阅读