Google Kaptcha 验证码生成器详细配置

文章介绍了如何在SpringBoot应用中集成Kaptcha库来生成验证码。首先,需要引入Kaptcha的依赖。然后,创建一个配置类`KaptchaConfig`,配置验证码的各种属性,如边框、颜色、字体等。接着,展示了`KaptchaController`控制器的代码,用于生成和处理验证码的HTTP请求。最后,文章提到了如何将生成的验证码保存到Session中,并提供了相关配置项的详细说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0.引入依赖:

<dependency>
   <groupId>com.github.axet</groupId>
   <artifactId>kaptcha</artifactId>
   <version>${kaptcha.version}</version>
</dependency>

1.添加配置类(SpringBoot)

@Configuration
public class KaptchaConfig {

	@Bean
	public DefaultKaptcha producer() {
		Properties properties = new Properties();

		properties.put("kaptcha.border", "no");
		properties.put("kaptcha.textproducer.font.color", "black");
		properties.put("kaptcha.textproducer.char.space", "5");
		properties.put("kaptcha.textproducer.char.length", "4");
		properties.put("kaptcha.textproducer.font.names", "Arial,Courier,cmr10,宋体,楷体,微软雅黑");
		properties.put("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.FishEyeGimpy");
		Config config = new Config(properties);
		DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
		defaultKaptcha.setConfig(config);
		return defaultKaptcha;
	}
}

1.1.配置项说明列表

项目说明默认值
kaptcha.border是否有边框yes,可选:yes,no
kaptcha.border.color边框颜色Color.BLACK
kaptcha.border.thickness边框厚度1
kaptcha.producer.impl默认DefaultKaptcha,可自己实现Producer接口
kaptcha.textproducer.impl文本生成器DefaultTextCreator,可自己实现TextProducer接口
kaptcha.textproducer.char.string文本生成器可使用的字符abcde2345678gfynmnpwx
kaptcha.textproducer.char.length生成文本字符长度5
kaptcha.textproducer.font.names生成文本的字体名称Arial
kaptcha.textproducer.font.size生成文本的字号40
kaptcha.textproducer.font.color生成文本的颜色Color.BLACK
kaptcha.textproducer.char.space生成文本的间隔的空格数2
kaptcha.noise.impl干扰器实现类DefaultNoise,可自己实现NoiseProducer接口
kaptcha.noise.color生成干扰元素的颜色Color.BLACK
kaptcha.obscurificator.impl遮挡实现类WaterRipple,可自己实现GimpyEngine接口
kaptcha.word.impl文字呈现渲染器实现类DefaultWordRenderer,可自己实现WordRenderer接口
kaptcha.background.impl背景DefaultBackground,可自己实现BackgroundProducer接口
kaptcha.background.clear.from渐变背景颜色开始值Color.LIGHT_GRAY
kaptcha.background.clear.to渐变背景颜色结束值Color.WHITE
kaptcha.image.width图片宽度200
kaptcha.image.height图片高度50
kaptcha.session.key获取Session中验证码的KeyKAPTCHA_SESSION_KEY
kaptcha.session.date获取Session时间的KeyKAPTCHA_SESSION_DATE

2 验证码控制器

@Controller
public class KaptchaController {

	@Resource
	private Producer producer;

	/**
	 * 验证码图片
	 */
	@GetMapping("captcha.jpg")
	public void captcha(HttpServletResponse response) throws IOException {
		response.setHeader("Cache-Control", "no-store, no-cache");
		response.setContentType("image/jpeg");

		// 生成文字验证码
		String code = producer.createText();
		// 生成图片验证码
		BufferedImage image = producer.createImage(code);
		
		// NOTE: 保存到shiro session
		ShiroUtils.setSessionAttribute("KAPTCHA_SESSION_KEY", code);
		// NOTE: 从shiro Session中获取验证码
		String kaptcha = ShiroUtils.getKaptcha("KAPTCHA_SESSION_KEY");
		log.debug("session中的当前验证码:{}", kaptcha);

		ServletOutputStream out = response.getOutputStream();
		ImageIO.write(image, "jpg", out);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值