首页 > 其他分享 >SpringBoot 2.x 集成kaptcha生成图形验证码

SpringBoot 2.x 集成kaptcha生成图形验证码

时间:2022-10-14 10:46:14浏览次数:59  
标签:SpringBoot kaptcha 验证码 KAPTCHA setProperty properties Constants

Kaptcha 框架介绍 谷歌开源的一个可高度配置的实用验证码生成工具

  • 验证码的字体/大小/颜色
  • 验证码内容的范围(数字,字母,中文汉字!)
  • 验证码图片的大小,边框,边框粗细,边框颜色
  • 验证码的干扰线
  • 验证码的样式(鱼眼样式、3D、普通模糊)

集成步骤

依赖添加

使用国内baomidou二次封装的springboot整合starter

<!--验证码kaptcha依赖包-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>kaptcha-spring-boot-starter</artifactId>
    <version>1.1.0</version>
</dependency>

开发配置

@Configuration
public class CaptchaConfig {

    @Bean
    @Qualifier("captchaProducer")
    public DefaultKaptcha defaultKaptcha(){

        DefaultKaptcha kaptcha = new DefaultKaptcha();
        Properties properties = new Properties();
        //验证码个数
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");
//		properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Courier");
        //字体间隔
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE,"8");
        //干扰线颜色
//		properties.setProperty(Constants.KAPTCHA_NOISE_COLOR, "white");
        //干扰实现类
        properties.setProperty(Constants.KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise");
        //图片样式
        properties.setProperty(Constants.KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.WaterRipple");

        //文字来源
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_STRING, "0123456789");
        Config config = new Config(properties);
        kaptcha.setConfig(config);
        return kaptcha;

    }
    
}

实现controller进行测试

@Api(tags = "通知模块")
@RestController
@RequestMapping("/api/user/v1")
@Slf4j
public class NotifyController {

    @Autowired
    private Producer captchaProducer;

    @Autowired
    private StringRedisTemplate redisTemplate;

    @Autowired
    private NotifyService notifyService;

    /**
     * 图形验证码有效期10分钟
     */
    private static final long CAPTCHA_CODE_EXPIRED = 60 * 1000 * 10;

    /**
     * 获取图形验证码
     * @param request
     * @param response
     */
    @ApiOperation("获取图形验证码")
    @GetMapping("captcha")
    public void getCaptcha(HttpServletRequest request, HttpServletResponse response){

        String captchaText = captchaProducer.createText();
        log.info("图形验证码:{}",captchaText);

        //存储, 设置一分钟后失效
        redisTemplate.opsForValue().set(getCaptchaKey(request),captchaText,CAPTCHA_CODE_EXPIRED, TimeUnit.MILLISECONDS);

        BufferedImage bufferedImage = captchaProducer.createImage(captchaText);
        ServletOutputStream outputStream = null;
        try {
            outputStream = response.getOutputStream();
            ImageIO.write(bufferedImage,"jpg",outputStream);
            outputStream.flush();
            outputStream.close();
        } catch (IOException e) {
            log.error("获取图形验证码异常:{}",e);
        }

    }
}

标签:SpringBoot,kaptcha,验证码,KAPTCHA,setProperty,properties,Constants
From: https://www.cnblogs.com/isChenJY/p/16788810.html

相关文章

  • 初识SpringBoot
    什么是SpringSpring是一个开源框架,2003年兴起的轻量级的Java开发框架。作者:RodJohnsonSpring是为解决企业级应用开发的复杂性而创建的,简化开发。Spring如何简化Java......
  • selenium中处理验证码问题
    selenium中处理验证码问题: 验证码:基本作用:可以实现当前访问页面的数据安全性、还可以减少用户的并发数;类型:1.纯数字、纯字母2.汉字组合3.数学运算题4.滑......
  • springboot项目中swagger配置
    1、导入依赖查看代码<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</vers......
  • springboot/spring使用ConfigurationProperties注解读取自定义属性(尚硅谷)
    pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xs......
  • SpringBoot集成JMH进行基准测试
    基准测试时评估程序/接口性能的一个有效的方法。笔者早期在网上了解到​​JMH​​这个代码工具。由于之前找到的一些代码不具备项目实践场景的说服力,通常是一项简单算法,独立......
  • 几行代码,搞定 SpringBoot 接口恶意刷新和暴力请求!
    在实际项目使用中,必须要考虑服务的安全性,当服务部署到互联网以后,就要考虑服务被恶意请求和暴力攻.击的情况,下面的教程,通过​​intercept​​和​​redis​​针对​​url+ip......
  • 教你优雅的实现 SpringBoot 并行任务
    SpringBoot的定时任务:第一种:把参数配置到.properties文件中:代码:packagecom.accord.task;importjava.text.SimpleDateFormat;importjava.util.Date;importorg.spring......
  • SpringBoot深入理解
    当使用打包时,会下载org-springframework-boot-loader的jar,并且不会放在lib存放的第三方jar包文件中,该jar包中有个JarLauncher.class文件中设置了jar包运行时的入口和打包后......
  • 计算机毕业设计基于SpringBoot兼职招聘系统
    ......
  • 验证码训练环境
       链接:https://pan.baidu.com/s/1Bk6q1tRUf6LNC8XZrIziPg提取码:js28需要用到的安装环境    ​​官方驱动|NVIDIA​​  Anaconda3安装   pytorch+CUDA+CUD......