spring Boot 生成图片验证码 存入redis

首先生成导入jar包:


	cn.apiclub.tool
	simplecaptcha
	1.2.2

下边是生成图片验证码的代码:

在生成验证码后,以验证码值为key存入redis内 (已经写好的存入方法,再次不做赘述了)

captcha.getAnswer() 是图片验证码的值
图片存放时间为1分钟
stringRedisTemplate.opsForValue().set(captcha.getAnswer(), captcha.getAnswer(), 1, TimeUnit.MINUTES);

我使用图片流的方式来讲验证码返回给前端

ImageIO.write(captcha.getImage(), "jpg", out);


以下是全部代码

    private static int captchaW = 200;  //图片验证码的宽
    private static int captchaH = 80;   //图片验证码的高
    private static int codeCount = 4;   //值得位数
    private static char[] codeNumber = new char[]{'0','1','2','3','4','5','6','7','8','9'};     //生成验证码的取值范围

public void createCode(HttpServletRequest request, HttpServletResponse response) throws Exception {
        //创建验证码模型,指定图片的宽和高
        Captcha.Builder captcha = new Captcha.Builder(captchaW, captchaH);
        //设置字体的颜色和大小,若list内放置多个颜色或字体,则每次生成随机使用其中一个
        List fonts = new ArrayList<>();
        List colors = new ArrayList<>();
        fonts.add(new Font("Arial",Font.BOLD, 60));
        colors.add(Color.RED);
        WordRenderer wr = new DefaultWordRenderer(colors, fonts);
        //将数字放入到图片上
        captcha.addText(new DefaultTextProducer(codeCount, codeNumber), wr);
        //为验证码值设置边框效果---无
        captcha.gimp(new RippleGimpyRenderer());
        //图片验证码生成
        captcha.build();
        Captcha captchas = captcha.build();
        //将验证码以形式缓存到redis
        stringRedisTemplate.opsForValue().set(captchas.getAnswer(), captchas.getAnswer(), 1, TimeUnit.MINUTES);
        OutputStream out = response.getOutputStream();
        try {
            ImageIO.write(captchas.getImage(), "jpg", out);
        } catch (Exception e) {
            log.debug("", e);
          
        }
        out.close();
     
    }

学习链接:http://www.iteye.com/topic/790038
 
  

注意:原方法是将生成的图片验证码放入到cookie 中,并将cookie的值返回。

本文为自己学习所整理笔记,仅限参考

你可能感兴趣的:(生成图片验证码)