SpringBoot整合Kaptcha

阅读: 评论:0

SpringBoot整合Kaptcha

SpringBoot整合Kaptcha

目录

前言

1.Kaptcha简介

2.Kaptcha参数 

实现步骤

1.引入依赖

2.配置类

 3.配置文件

4.controller类

5.结果展示 


前言

1.Kaptcha简介

Kaptcha是Google提供的一个图形验证码插件,可以从官网。它的源代码是公开的,在上面的官网提供的download项,可以下载一个zip包,里面包含了jar包和源代码。

原项目地址点此跳转!!!

2.Kaptcha参数 

Constant描述默认值
kaptcha.border图片边框,合法值:yes , noyes
lor边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue.black
kaptcha.border.thickness边框厚度,合法值:>01
kaptcha.image.width图片宽200
kaptcha.image.height图片高50
kaptcha.producer.impl图片实现类
文本实现类
文本集合,验证码值从此集合中获取abcde2345678gfynmnpwx
验证码长度5
字体Arial, Courier
字体大小40px
字体颜色,合法值: r,g,b  或者 white,black,blue.black
文字间隔2
干扰实现类
干扰颜色,合法值: r,g,b 或者 white,black,blue.black
kaptcha.obscurificator.impl

图片样式:

水纹de.kaptcha.impl.WaterRipple
鱼眼de.kaptcha.impl.FishEyeGimpy
阴影de.kaptcha.impl.ShadowGimpy

kaptcha.background.impl背景实现类
kaptcha.background.clear.from背景颜色渐变,开始颜色light grey
kaptcha.背景颜色渐变,结束颜色white
kaptcha.word.impl文字渲染器
kaptcha.session.keysession keyKAPTCHA_SESSION_KEY
kaptcha.session.datesession dateKAPTCHA_SESSION_DATE

实现步骤

1.引入依赖

<!-- 验证码 -->
<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version>
</dependency>

2.配置类

package com.fig;import java.util.Properties;
import t.annotation.Bean;
import t.annotation.Configuration;
le.code.kaptcha.impl.DefaultKaptcha;
le.code.kaptcha.util.Config;
import le.code.kaptcha.Constants.*;/*** 验证码配置* * @author inchlifc*/
@Configuration
public class CaptchaConfig{@Bean(name = "captchaProducer")public DefaultKaptcha getKaptchaBean(){DefaultKaptcha defaultKaptcha = new DefaultKaptcha();Properties properties = new Properties();// 是否有边框 默认为true 我们可以自己设置yes,noproperties.setProperty(KAPTCHA_BORDER, "yes");// 验证码文本字符颜色 默认为Color.BLACKproperties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "black");// 验证码图片宽度 默认为200properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");// 验证码图片高度 默认为50properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60");// 验证码文本字符大小 默认为40properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "38");// KAPTCHA_SESSION_KEYproperties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCode");// 验证码文本字符长度 默认为5properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");// 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");// 图片样式 水纹de.kaptcha.impl.WaterRipple 鱼眼de.kaptcha.impl.FishEyeGimpy 阴影de.kaptcha.impl.ShadowGimpyproperties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, &#le.code.kaptcha.impl.ShadowGimpy");Config config = new Config(properties);defaultKaptcha.setConfig(config);return defaultKaptcha;}@Bean(name = "captchaProducerMath")public DefaultKaptcha getKaptchaBeanMath(){DefaultKaptcha defaultKaptcha = new DefaultKaptcha();Properties properties = new Properties();// 是否有边框 默认为true 我们可以自己设置yes,noproperties.setProperty(KAPTCHA_BORDER, "yes");// 边框颜色 默认为Color.BLACKproperties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90");// 验证码文本字符颜色 默认为Color.BLACKproperties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue");// 验证码图片宽度 默认为200properties.setProperty(KAPTCHA_IMAGE_WIDTH, "160");// 验证码图片高度 默认为50properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "60");// 验证码文本字符大小 默认为40properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "35");// KAPTCHA_SESSION_KEYproperties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "kaptchaCodeMath");// 验证码文本生成器properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "com.fig.KaptchaTextCreator");// 验证码文本字符间距 默认为2properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3");// 验证码文本字符长度 默认为5properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6");// 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");// 验证码噪点颜色 默认为Color.BLACKproperties.setProperty(KAPTCHA_NOISE_COLOR, "white");// 干扰实现类properties.setProperty(KAPTCHA_NOISE_IMPL, &#le.code.kaptcha.impl.NoNoise");// 图片样式 水纹de.kaptcha.impl.WaterRipple 鱼眼de.kaptcha.impl.FishEyeGimpy 阴影de.kaptcha.impl.ShadowGimpyproperties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, &#le.code.kaptcha.impl.ShadowGimpy");Config config = new Config(properties);defaultKaptcha.setConfig(config);return defaultKaptcha;}
}

 3.配置文件

# 项目相关配置
inchlifc:# 验证码类型 math 数组计算 char 字符验证captchaType: math

4.controller类

package com.llermon;import java.awt.image.BufferedImage;
import java.io.IOException;
import urrent.TimeUnit;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.util.FastByteArrayOutputStream;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
le.code.kaptcha.Producer;
import stant.Constants;
import domain.AjaxResult;
import edis.RedisCache;
import com.inchlifcmon.utils.sign.Base64;
import com.inchlifcmon.utils.uuid.IdUtils;
import com.inchlifc.system.service.ISysConfigService;/*** 验证码操作处理* * @author inchlifc*/
@RestController
public class CaptchaController{@Resource(name = "captchaProducer")private Producer captchaProducer;@Resource(name = "captchaProducerMath")private Producer captchaProducerMath;@Autowiredprivate RedisCache redisCache;// 验证码类型@Value("${inchlifc.captchaType}")private String captchaType;@Autowiredprivate ISysConfigService configService;/*** 生成验证码*/@GetMapping("/captchaImage")public AjaxResult getCode(HttpServletResponse response) throws IOException{AjaxResult ajax = AjaxResult.success();boolean captchaOnOff = configService.selectCaptchaOnOff();ajax.put("captchaOnOff", captchaOnOff);if (!captchaOnOff){return ajax;}// 保存验证码信息String uuid = IdUtils.simpleUUID();String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid;String capStr = null, code = null;BufferedImage image = null;// 生成验证码if ("math".equals(captchaType)){String capText = ateText();capStr = capText.substring(0, capText.lastIndexOf("@"));code = capText.substring(capText.lastIndexOf("@") + 1);image = ateImage(capStr);}else if ("char".equals(captchaType)){capStr = code = ateText();image = ateImage(capStr);}redisCache.setCacheObject(verifyKey, code, Constants.CAPTCHA_EXPIRATION, TimeUnit.MINUTES);// 转换流信息写出FastByteArrayOutputStream os = new FastByteArrayOutputStream();try{ImageIO.write(image, "jpg", os);} catch (IOException e){(e.getMessage());}ajax.put("uuid", uuid);ajax.put("img", ByteArray()));return ajax;}
}

5.结果展示 

本文发布于:2024-01-30 21:06:34,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170661999722844.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:SpringBoot   Kaptcha
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23