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

来源:互联网 发布:千牛首页的店铺数据 编辑:程序博客网 时间:2024/06/04 23:32

首先生成导入jar包:

<dependency><groupId>cn.apiclub.tool</groupId><artifactId>simplecaptcha</artifactId><version>1.2.2</version></dependency>

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

在生成验证码后,以验证码值为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<Font> fonts = new ArrayList<>();        List<Color> 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();        //将验证码以<key,value>形式缓存到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的值返回。

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

原创粉丝点击