spring boot项目中验证码功能实现

写spring boot项目登录功能是,验证码功能肯定是不能少的,这里将介绍一个工具来生成二维码,kaptcha

Kaptcha使用步骤

    • 导入jar包
    • 编写Kaptcha配置类
    • 生成随机字符串和验证码图片

导入jar包

		<dependency>
            <groupId>com.github.penggle</groupId>
            <artifactId>kaptcha</artifactId>
            <version>2.3.2</version>
        </dependency>

编写Kaptcha配置类

  • 首先在配置类包下编写Kaptcha配置类
@Configuration
public class KapthchaConfig {
    @Bean
    public Producer kaptchaProducer(){
        //用于设置验证码具体细节
        Properties properties = new Properties();
        //设置验证码图片宽度
        properties.setProperty("kaptcha.image.width", "100");
        //设置验证码图片高度
        properties.setProperty("kaptcha.image.height", "40");
        //设置验证码文字大小
        properties.setProperty("kaptcha.textproducer.font.size", "32");
        //设置验证码图片颜色
        properties.setProperty("kaptcha.textproducer.font.color", "0,0,0");
        //设置验证码文字内容
        properties.setProperty("kaptcha.textproducer.char.string", "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYAZ");
        //设置生成随机字符数量
        properties.setProperty("kaptcha.textproducer.char.length", "4");
        //图片干扰设置
        properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");

        //Kaptcha实现类
        DefaultKaptcha kaptcha = new DefaultKaptcha();
        //将properties配置封装到Config对象中
        Config config = new Config(properties);
        //将config传入实现类
        kaptcha.setConfig(config);
        return kaptcha;
    }
}

生成随机字符串和验证码图片

  • 配置类写完后就可以直接使用生成验证码了,核心是两个方法,createText()和createImage(String text) ,前者是随机生成验证码字符串,后者是将前者生成的字符串对象作为参数生成验证码图片,最后将图片通过输出流和imageIO写回浏览器即可

Controller层

@Controller
public class KaptController {
    //注入生成验证码所需要的Producer对象
    @Autowired
    private Producer kaptcha;

    /**
     * 获取验证码
     */
    @RequestMapping("/kaptcha")
    public void getKpthcha(HttpServletResponse response, HttpSession session){
        //生成验证码内容
        String text = kaptcha.createText();
        //生成验证码图片
        BufferedImage image = kaptcha.createImage(text);
        //将文字保存进session中
        session.setAttribute("code",text);
        //将图片写回流中,输出给浏览器
        response.setContentType("image/png");
        try {
            ServletOutputStream os = response.getOutputStream();
            ImageIO.write(image,"png",os);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  • 浏览器请求该方法的结果
    spring boot项目中验证码功能实现_第1张图片

到这里,Kaptcha的简单使用就介绍完毕了。

你可能感兴趣的:(项目技术点,spring,boot,java)