生成base64格式的验证码

好奇看了一下公司的验证码是如何生成的,这里用到了EasyCaptcha(github地址:https://github.com/whvcse/EasyCaptcha),简单说一下如何使用以及具体的业务场景:

1、导入依赖:

maven:

  1. <dependencies>
  2. <dependency>
  3. <groupId>com.github.whvcse</groupId>
  4. <artifactId>easy-captcha</artifactId>
  5. <version>1.6.2</version>
  6. </dependency>
  7. </dependencies>

gradle:

  1. dependencies {
  2. compile 'com.github.whvcse:easy-captcha:1.6.2'
  3. }

2、此处新建一个springboot项目用来测试:

controller:

  1. package com.zym.testeasycaptcha.controller;
  2. import com.wf.captcha.ArithmeticCaptcha;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.data.redis.core.RedisTemplate;
  5. import org.springframework.stereotype.Controller;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.ResponseBody;
  8. import java.util.UUID;
  9. @Controller
  10. public class TestController {
  11. @Autowired
  12. private RedisTemplate<String,String> redisTemplate;
  13. @RequestMapping("/test")
  14. @ResponseBody
  15. public String test(){
  16. //EasyCaptcha为我们提供了png类型(SpecCaptcha),gif类型(GifCaptcha),
  17. // 中文类型(ChineseCaptcha),中文gif类型(ChineseGifCaptcha) ,算术类型(ArithmeticCaptcha),此处我们用算术类型测试
  18. ArithmeticCaptcha captcha = new ArithmeticCaptcha(130,48); //宽度、长度
  19. //几位数运算
  20. captcha.setLen(3);
  21. //获取生成的文本
  22. String result =captcha.text();
  23. //生成一个uuid用来保存到redis中
  24. UUID uuid = UUID.randomUUID();
  25. System.out.println(uuid);
  26. String key = uuid.toString();
  27. redisTemplate.opsForValue().set(key,result);
  28. //将图片返回给前端,只需要base64格式
  29. System.out.println(captcha.toBase64());
  30. return captcha.toBase64();
  31. }
  32. }

启动项目,调用该接口,后台输出:

  1. data:image/png;base64,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

我们可以在线转换一下,看一下长什么样子:

网址:http://tool.chinaz.com/tools/imgtobase/

效果:
1.png
看redis中保存的结果是否为4:
2.png
关于EasyCaptcha的简单测试就完成了