java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot整合Kaptcha验证码

SpringBoot整合Kaptcha实现图形验证码功能

作者:DaenCode

这篇文章主要介绍了SpringBoot整合Kaptcha实现图形验证码功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

引入依赖

首先引入Kaptcha的starter依赖

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>kaptcha-spring-boot-starter</artifactId>
            <version>1.1.0</version>
</dependency>

验证码配置类

/**
 * 图形验证码配置类
 */
@Configuration
@Slf4j
public class CaptchaConfig {
    /**
     * 验证码配置
     * @return
     */
    @Bean
    @Qualifier("captchaProducer")
    public DefaultKaptcha kaptcha() {
        DefaultKaptcha kaptcha = new DefaultKaptcha();
        Properties properties = new Properties();
        //验证码个数
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");
        //字体间隔
        properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE,"8");
        //干扰实现类
        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

主要步骤如下:

  • 1.生成验证码字符串
  • 2.生成图形形式验证码
  • 3.输出到客户端
  • 4.关闭流
@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
    @Autowired
    private Producer producer;
    /**
     * 生成图形验证码
     * 1.生成验证码字符串
     * 2.生成图形形式验证码
     * 3.输出到客户端
     * 4.关闭流
     * @param request
     * @param response
     */
    @GetMapping("captcha")
    public void getCaptcha(HttpServletRequest request, HttpServletResponse response){
        //生成字符串验证码
        String code= producer.createText();
        //创建图形验证码
        BufferedImage image=producer.createImage(code);
        try {
            //写到浏览器,向客户端发送数据
            ServletOutputStream outputStream=null;
            //获取输出流
            outputStream=response.getOutputStream();
            ImageIO.write(image,"jpg",outputStream);
            outputStream.flush();
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

ServletOutputStream

作用:用户向客户端发送二进制数据。提供了字节数据写入响应输出流的方式,用于生成和发送动态内容或者文件的响应。

应用场景

使用步骤

效果

写在最后

以上就是SpringBoot整合Kaptcha实现图形验证码功能的详细内容,更多关于SpringBoot整合Kaptcha验证码的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文