Java,Springboot 实现算法验证码加减法图形验证码,Kaptcha 实现加减法验证码

男娘i 2022-01-07 02:57 790阅读 0赞

最近在做一个加减法验证码,记录下实现的过程。

通常Java实现验证码的工具会用到 kaptcha 这个工具包,但实现的验证码都是图形验证码,没有看到加法验证码,查询了相关资料,实现了加减法验证码,效果如图

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2h1cWlhbmt1bmxvbA_size_16_color_FFFFFF_t_70

首先是pom所需要的依赖

  1. <!--验证码-->
  2. <dependency>
  3. <groupId>com.github.penggle</groupId>
  4. <artifactId>kaptcha</artifactId>
  5. <version>2.3.2</version>
  6. </dependency>

主要是配置类里面,更改下验证码的字符串,代码如下

  1. /**
  2. * 生成验证码配置
  3. *
  4. * @author hqk
  5. */
  6. @Configuration
  7. public class KaptchaConfig {
  8. @Bean
  9. public DefaultKaptcha producer() {
  10. Properties properties = new Properties();
  11. properties.put("kaptcha.border", "no");
  12. properties.put("kaptcha.textproducer.font.color", "black");
  13. properties.put("kaptcha.textproducer.char.space", "5");
  14. //如果需要生成算法验证码加上一下配置
  15. properties.put("kaptcha.textproducer.char.string", "1234567890");
  16. //如果需要去掉干扰线
  17. properties.put("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");
  18. Config config = new Config(properties);
  19. DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
  20. defaultKaptcha.setConfig(config);
  21. return defaultKaptcha;
  22. }
  23. }

接下来写个controller实验下,代码如下

  1. /**
  2. * <p></p >
  3. *
  4. * @author hqk
  5. * @version 1.0: SysLoginController.java v0.1 2019/6/25 上午10:44 hqk Exp$
  6. */
  7. @RequestMapping("/app/system")
  8. @Controller
  9. public class SysLoginController {
  10. @Resource
  11. private StringRedisTemplate stringRedisTemplate;
  12. @Resource
  13. private Producer producer;
  14. @RequestMapping("number.jpg")
  15. public void number(HttpServletResponse response) throws IOException {
  16. response.setHeader("Cache-Control", "no-store, no-cache");
  17. response.setContentType("image/jpeg");
  18. //生成文字验证码
  19. String text = producer.createText();
  20. //个位数字相加
  21. String s1 = text.substring(0, 1);
  22. String s2 = text.substring(1, 2);
  23. int count = Integer.valueOf(s1).intValue() + Integer.valueOf(s2).intValue();
  24. //生成图片验证码
  25. BufferedImage image = producer.createImage(s1 + "+" + s2 + "=?");
  26. //保存 redis key 自己设置
  27. //stringRedisTemplate.opsForValue().set("",String.valueOf(count));
  28. ServletOutputStream out = response.getOutputStream();
  29. ImageIO.write(image, "jpg", out);
  30. }
  31. }

好了,java实现加法验证码就实现了

代码git地址: https://github.com/qiankunhu/springbootdemo git@github.com:qiankunhu/springbootdemo.git

发表评论

表情:
评论列表 (有 0 条评论,790人围观)

还没有评论,来说两句吧...

相关阅读