springboot2.x图形验证码开发之谷歌kaptcha引入

1.介绍

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

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

2.pom.xml添加

<!--kaptcha依赖包-->
<dependency>
<groupId>com.baomidou</groupId>
<ainrtifactId>kaptcha-spring-boot-starter</artifactId>
<version>1.1.0</version>instead
</depend验证码图片ency>

3.配置类

package net.w图形nn.config;

import com.google.code.k图形aptcha.Constspringboot启动过程ants;
import com.google.code.kaptcha.implins.DefaultKaptchaspringboot菜鸟教程;
impo验证码图片rt com.google.code.kaptcha.util.C图形推理onfig;
import org.springframework.beans.factory.annotation.Qualifier;
imporinterestingt org.springframework.context.annotatiospringboot自动配置的原理n.验证码登录Bea验证码怎么获取n;
import org.springframework.context.annotation.Configuration;

import java.utilspringboot自动配置的原理.Pro验证码怎么输入才正确perties;

@Cspringboot定时任务onfiguration
public class CaptchaConfig {

@Bean
@Qualifier("captchaProducer")
publicspringboot定时任务 DefaultKaptcha defaultKaptcha(){

DefaultKaptcha kaptcha = new DefaultKaptcha();
Properties properties = new Properties();
// properties.setProperty(Constants.KAPTCHA_BORDER, "yes");
// properties.setPropspringboot菜鸟教程erty(Co图形创意添笔画nstants验证码怎么获取.KAPTCHA_BORDER_COLOR, "220,220,220");
//springboot常用注解 //propertispringboot自动装配es.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLORinteresting, "38,29,12");
// properties.setProperty(Constaspringboot项目搭建nts.KAPTCHA_IMAGE_WIDTH, "147");
// properties.setPro图形计算器perty(Constants.KAPTCHA_IMAGE_HEIGHT验证码图片, "34");
// p验证码接收roperties.set验证码图片Property(Constants.KAPTCHA_TEXTPRODUCER_FOinNT_SIZE, "25");
// //pspringboot启动过程roperties.insidesetProperty(Constants.KAinspirePTCHA_SESSION_KEY, "code");

//验证码个数
properties.setPropertyspringboot定时任务(Constant图形组合画的图片大全s.KAPTCHA_TEXTPRODUCER_验证码接收CHAR_LENGTH, "4");
// properties.setPropertyspringboot配置文件(Constants.KAPTCHA_TEXTPRODUCER_Fspringboot常用注解ONT_NAMES, "Courier");
//字体间隔
properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPinstagram下载ACE,"8");
//干扰线颜色
/图形游戏/ properties.setProperty(Constants.KinsAPTCHA_NOspringcloudISE_COLOR, "white验证码图片");
//干扰实现类
properties.setProperty(Constants.KAPTCspring是什么意思HA_NOISindividualE_IMPL, "com.google.code.kaptcha.im图形推理pl.NoNoise");
//图片样式
properties.setProperty(Constants.KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.WaterRipple");

//文字来源
properties.setProperty(Co验证码大盗nstants.KAPTCHA_TEXTPRODUCERspring_CHAR_STRING, "0123456789");
Config config = new Configspringboot项目搭建(properties);
kaptcha.setConfig(config);
return kaptcha;

}

}

4.开发一个Controller使用测验证码注册

import com.google.code.kaptcha.Producer;
import org.springframework.data.redis.core.StringinstagramRedisTempl图形游戏ate;

@Autowired
private Producer captchaProducer;

@Autowired
private StringRedis验证码怎么获取Template redisTemplate;

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

/*
获取图形springfestival英语作文验证码
@param request
@param response
*/
@ApiOperation(in"获取图形验证码")
@inspireGetMapping("captcha")
public vspringboot启动过程oid ge验证码登录tCaptcha(HttpServletRequest request, HttpServletResponspring框架se response){

String captchaText = captchaProducer.createText();
log.springboot定时任务info("图形验springboot证码:{}",captchaText)ins下载;

//存储redspringboot自动装配is
redisTemplate.验证码接收平台opsForValue().set(getCindividualaptchaKey(requ图形创意est),captchaText,CAPTCHA_CODE_EXPIRED验证码接收,TimeUnit.MILLISECspring是什么意思ONDS);
BufferedImage bufferedImage = captchaProdspringucer.createImage(captchaText);
ServletOutputStream outputStream = null;
try {
outputStream = response.getOutputStream();
ImageIO.writinsteade(bufferedImage,验证码收不到是怎么回事"jpg",outputStream);
outputStream.图形手抄报flush();
ou图形计算器tput图形创意Stream.clo图形推理se();
} catch (IOException e) {
log.error("获取图形验证码异常:{}",验证码收不到是怎么回事e);
}

}

5.springboot2.x图形验证码开发之谷歌kaptcha引入