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

首先生成导入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的值返回。

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

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值