一、新建一个SpringBoot 项目,springboot项目创建过程详见
mac idea 创建 springboot 项目_JAVA·D·WangJing的博客-CSDN博客_mac idea创建springboot项目
二、SpringBoot 整合使用 Rdis
SpringBoot 项目 添加 redis配置_JAVA·D·WangJing的博客-CSDN博客_springboot添加redis
三、SpringBoot 整合 kaptcha
3.1、pom.xml依赖配置
<!-- kaptcha 验证码 -->
<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version>
</dependency>
3.2、Kaptcha 配置类
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: wangjing* @createTime: 2022-10-19 14:01* @version: 1.0.0* @Description: Kaptcha 配置类*/
@Configuration
public class KaptchaConfig {@Beanpublic DefaultKaptcha 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", "0123456789QWERTYUIOPASDFGHJKLZXCVBNM");// 生成的随机字符数properties.setProperty("kaptcha.textproducer.char.length", "4");// 干扰类,噪声、阴影 默认防破解properties.setProperty("kaptcha.noise.impl", "com.google.code.kaptcha.impl.NoNoise");DefaultKaptcha kaptcha = new DefaultKaptcha();Config config = new Config(properties);kaptcha.setConfig(config);return kaptcha;}
}
3.3、Controller 层增加获取验证码接口
@ApiOperation("获取验证码")
@GetMapping("/getVerificationCode/{uuid}")
public void getVerificationCode(HttpServletResponse response,@PathVariable("uuid") String uuid) throws IOException {//设置响应头response.setHeader("Cache-Control", "no-cache");response.setHeader("Pragma", "no-cache");response.setContentType("image/jpeg");String text = defaultKaptcha.createText();// 将验证码存redisredisUtil.set(uuid, text, 900);//创建验证码图片BufferedImage image = defaultKaptcha.createImage(text);ServletOutputStream os = response.getOutputStream();ImageIO.write(image, "jpg", os);IOUtils.closeQuietly(os);
}
3.4、通过访问接口,进行验证
注:以上内容仅提供参考和交流,请勿用于商业用途,如有侵权联系本人删除!