今日学习笔记

验证码是防止因系统或网络原因出现重复登录等异常

Kaptcha则是生成这样的验证码图片的一个功能强大的工具包

1.导包

<dependency>    <groupId>com.github.axet</groupId>    <artifactId>kaptcha</artifactId>    <version>0.0.9</version></dependency>

2.添加配置

package io.renren.common.config;

import com.google.code.kaptcha.impl.DefaultKaptcha;import com.google.code.kaptcha.util.Config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;

import java.util.Properties;

/** * 生成验证码配置 * * @author Mark sunlightcs@gmail.com */@Configurationpublic class KaptchaConfig {

    @Bean    public DefaultKaptcha producer() {        Properties properties = new Properties();        properties.put("kaptcha.border", "no");        properties.put("kaptcha.textproducer.font.color", "black");        properties.put("kaptcha.textproducer.char.space", "3");        properties.put("kaptcha.textproducer.font.names", "Arial,Courier,cmr10,宋体,楷体,微软雅黑");        Config config = new Config(properties);        DefaultKaptcha defaultKaptcha = new DefaultKaptcha();        defaultKaptcha.setConfig(config);        return defaultKaptcha;}}关于工具包的配置可以根据自己的需要进行修改

3.保存在session中

@Autowired    private Producer producer;        @GetMapping("kaptcha.jpg")    public void kaptcha(HttpServletResponse response,HttpServletRequest request) throws ServletException,IOException{        response.setHeader("Cache-Control", "no-store,no-cache");        response.setContentType("image/jpeg");        //生成文字验证码        String text=producer.createText();        //生成图片验证码        BufferedImage image=producer.createImage(text);        //保存验证码到session        request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, text);        ServletOutputStream out=response.getOutputStream();        ImageIO.write(image, "jpg", out);        //用到IO工具包控制开关        IOUtils.closeQuietly(out);            }

4.存数据库

存数据库可以灵活设置过期时间

uuid是主键,code是验证码。expire_time是过期时间。
然后每次生成验证码,需要一个参数(说是uuid其实用的时候就是一个id的作用)。会将这个uuid当做表的主键,然后code和过期时间一起存到数据库。
在登录的时候先做校验,判断这个uuid的code和输入的验证码是否一样,是的话验证成功,并且删除这条记录。不是的话返回验证码错误 5.调用

    /**     * 验证码     */    @ApiOperation("获取验证码")    @RequestMapping("kaptcha.jpg")    public void kaptcha(HttpServletResponse response, @ApiParam(name="uuid",value="随机字符串") String uuid)throws IOException {        response.setHeader("Cache-Control", "no-store, no-cache");        response.setContentType("image/jpeg");        //获取图片验证码        BufferedImage image = sysCaptchaService.getCaptcha(uuid);        ServletOutputStream out = response.getOutputStream();        ImageIO.write(image, "jpg", out);        IOUtils.closeQuietly(out);    }

来源:https://www.icode9.com/content-4-833601.html

(0)

相关推荐

  • SAP Fiori Elements 应用的 manifest.json 文件运行时如何被解析的

    在 HTML 页面里,有一个 script 标签,locate-reuse-libs.js, 这个 JavaScript 文件触发 manifest.json 的加载与解析: 在加载的 manifes ...

  • (8条消息) kafka消费者kafka

    问题 采用内置的zookeeper,发送端发送数据,接收端能够接收数据 但是采用外置的zookeeper,发送端发送数据,接收端一直接收不到数据 解决: 先判断主题是否一致,如果一致就在关闭kafka ...

  • 今日分享尖子生的学习笔记初中数学第一章《...

    今日分享 尖子生的学习笔记 初中数学第一章<有理数>

  • 今日份学习笔记2:运营在企业中的角色是什么

    先普及一个知识,运营管理是什么. 运营管理就是确保企业在将资源转化为可销售产品的过程中是高效顺畅的.也就是说辅助企业从制作产品到卖出的这个过程是高效顺畅的. 所以这个过程就产生出了供应链管理(也就是以 ...

  • 关于机器学习和深度学习,今日份学习笔记

    很怀念小时候,那时报纸.杂志.电视和广播是我们的灯塔,图书馆是我们的星辰大海.那时我们的记忆力好于体力,没有云存储,只有脑回路. 这是申鹤公众号第790天的第784篇原创文章 1956年,几个计算机科 ...

  • 一则公报案例学习笔记:对修改股东出资期限应否适用资本多数决规则的思考|审判研究

    一.问题的提出 2021年第3期<最高人民法院公报案例>刊登了鸿大(上海)投资管理有限公司与姚锦城公司决议纠纷上诉案,裁判要旨为:"公司股东滥用控股地位,以多数决方式通过修改出资 ...

  • JAVA多线程学习笔记整理

    多线程: 三种创建方法 继承Thread类,以线程运行内容重写run方法,创建Thread对象并用start方法启动该线程. (匿名内部类) (Lambda表达式) 实现Runable接口,以线程运行 ...

  • 周哥学习笔记(2021.5.8)

    心理界限存在的意义,正是为了帮助人们控制情绪进入的量,不至于太过冷漠或太过投入,让我们保持一个合适的距离与外界互动. 人没有办法只通过吸收变得更美好和丰富,它必须通过大胆的碰撞和创造.如果不能保持足够 ...

  • 【学习笔记】控制角色移动的N种方法,但都离不开重复执行

    [学习笔记]控制角色移动的N种方法,但都离不开重复执行 今天我们讲一下控制角色移动的多种方法,因为缺少操作实例,希望课下同学们结合例子好好练习. 首先,我们说一下控制角色移动的多种方法.最比较常见的就 ...

  • 胡希恕伤寒论学习笔记——42

    42.太阳病,外证未解,脉浮弱者,当以汗解,宜桂枝汤. 字面意思是说:太阳病,外证依然存在,脉是浮弱的,治疗上依然需要通过出汗的方法,这时应该用桂枝汤一类的方剂. "宜"字说明不是 ...

  • 量柱擒涨停 - 量柱战法学习笔记(2)

    四.倍量战术 1.倍量的理解 [形态特征]:与前一个交易日比较高出1倍或1倍以上,就是倍量(4倍以上为发烧柱) ; [本质特征]:体现主力强势态度,主动(倍量阳/阴)买/卖盘吸筹坚决; [位置性质]: ...