织梦做网站利于优化,程序开发需要学什么,校园网网络规划与设计方案,在上海建网站多少钱Kaptcha验证码 Kaptcha 是一个用于生成验证码的开源库#xff0c;在 Java 中使用它可以轻松地为应用程序添加验证码功能。 一、引入依赖
首先#xff0c;需要在项目的 pom.xml 文件#xff08;如果是 Maven 项目#xff09;中添加 Kaptcha 的依赖#xff1a;
depend…Kaptcha验证码 Kaptcha 是一个用于生成验证码的开源库在 Java 中使用它可以轻松地为应用程序添加验证码功能。 一、引入依赖
首先需要在项目的 pom.xml 文件如果是 Maven 项目中添加 Kaptcha 的依赖
dependencygroupIdcom.baomidou/groupIdartifactIdkaptcha-spring-boot-starter/artifactIdversion1.1.0/version
/dependency二、配置 Kaptcha
创建一个配置类来设置 Kaptcha 的属性例如验证码的宽度、高度、字体、字符数量等
package com.lhs.config;import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;Configuration
public class CaptchaConfig {/*** 验证码配置* Kaptcha配置类名*/BeanQualifier(captchaProducer)public DefaultKaptcha kaptcha() {DefaultKaptcha kaptcha new DefaultKaptcha();Properties properties new Properties();// properties.setProperty(Constants.KAPTCHA_BORDER, yes);// properties.setProperty(Constants.KAPTCHA_BORDER_COLOR, 220,220,220);// //properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR, 38,29,12);// properties.setProperty(Constants.KAPTCHA_IMAGE_WIDTH, 147);// properties.setProperty(Constants.KAPTCHA_IMAGE_HEIGHT, 34);// properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE, 25);// //properties.setProperty(Constants.KAPTCHA_SESSION_KEY, code);//验证码个数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;}
}三、生成验证码
在需要生成验证码的地方获取 Kaptcha 实例并生成验证码
ApiOperation(获取图形验证码)
GetMapping(/image)
public void getImage(HttpServletRequest request, HttpServletResponse response){response.setHeader(Cache-Control, no-store, no-cache);response.setContentType(image/jpeg);String text kaptcha.createText();String cacheKey getCacheKey(request);redisTemplate.opsForValue().set(cacheKey,text,CAPTCHA_CODE_EXPIRED, TimeUnit.MILLISECONDS);BufferedImage image kaptcha.createImage(text);try {ServletOutputStream outputStream response.getOutputStream();ImageIO.write(image, jpg,outputStream );outputStream.flush();outputStream.close();} catch (IOException e) {throw new RuntimeException(e);}
}