登录中的图片验证码功能实现

旧城等待, 2022-12-27 07:56 272阅读 0赞

添加kaptcha依赖

  1. <dependency>
  2. <groupId>com.github.axet</groupId>
  3. <artifactId>kaptcha</artifactId>
  4. <version>0.0.9</version>
  5. </dependency>

自定义配置kaptcha的Producer

  1. @Configuration
  2. public class KaptchaConfig {
  3. private static final String KAPTCHA_BORDER = "kaptcha.border";
  4. private static final String KAPTCHA_TEXTPRODUCER_FONT_COLOR = "kaptcha.textproducer.font.color";
  5. private static final String KAPTCHA_TEXTPRODUCER_CHAR_SPACE = "kaptcha.textproducer.char.space";
  6. private static final String KAPTCHA_IMAGE_WIDTH = "kaptcha.image.width";
  7. private static final String KAPTCHA_IMAGE_HEIGHT = "kaptcha.image.height";
  8. private static final String KAPTCHA_TEXTPRODUCER_CHAR_LENGTH = "kaptcha.textproducer.char.length";
  9. private static final Object KAPTCHA_IMAGE_FONT_SIZE = "kaptcha.textproducer.font.size";
  10. @Bean
  11. public DefaultKaptcha producer() {
  12. Properties properties = new Properties();
  13. properties.put(KAPTCHA_BORDER, "no");
  14. properties.put(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue");
  15. properties.put(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, 5);
  16. properties.put(KAPTCHA_IMAGE_WIDTH, "100");
  17. properties.put(KAPTCHA_IMAGE_HEIGHT, "35");
  18. properties.put(KAPTCHA_IMAGE_FONT_SIZE, "30");
  19. properties.put(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");
  20. Config config = new Config(properties);
  21. DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
  22. defaultKaptcha.setConfig(config);
  23. return defaultKaptcha;
  24. }
  25. }

使用Producer生成图片验证码

  1. @Controller
  2. public class ValidateCodeController {
  3. @Autowired
  4. private Producer producer;
  5. @Autowired
  6. private ValidateCodeService validateCodeService;
  7. /**
  8. * 创建验证码
  9. *
  10. * @throws Exception
  11. */
  12. @GetMapping("/validata/code/{deviceId}")
  13. public void createCode(@PathVariable String deviceId, HttpServletResponse response) throws Exception {
  14. Assert.notNull(deviceId, "机器码不能为空");
  15. response.setHeader("Cache-Control", "no-store, no-cache");
  16. response.setContentType("image/jpeg");
  17. //生成文字验证码
  18. String text = producer.createText();
  19. //生成图片验证码
  20. BufferedImage image = producer.createImage(text);
  21. //验证码保存
  22. validateCodeService.saveImageCode(deviceId, text);
  23. try (
  24. ServletOutputStream out = response.getOutputStream()
  25. ) {
  26. ImageIO.write(image, "JPEG", out);
  27. }
  28. }
  29. }

发表评论

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

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

相关阅读

    相关 登录图片验证

    页面刷新时,自动发送获取验证码到服务端 输入验证码登录,登录成功返回token 通过token获取用户详情,跳转主页 //获取验证码图片 @GetMappi