SpringBoot集成kaptcha验证码

本文实例为大家分享了SpringBoot集成kaptcha验证码的具体代码,供大家参考,具体内容如下

1.kaptcha相关介绍

Kaptcha是一个基于SimpleCaptcha的验证码开源项目。

2.集成方案

①pom.xml中配置依赖

<!-- 验证码-->

<dependency>

<groupId>com.github.penggle</groupId>

<artifactId>kaptcha</artifactId>

<version>2.3.2</version>

</dependency>

②配置验证码Kaptcha相关设置

@Configuration

public class kaptchaConfig {

@Bean(name="captchaProducer")

public DefaultKaptcha getKaptchaBean(){

DefaultKaptcha defaultKaptcha=new DefaultKaptcha();

Properties properties=new Properties();

properties.setProperty("kaptcha.border", "yes");

properties.setProperty("kaptcha.border.color", "105,179,90");

properties.setProperty("kaptcha.textproducer.font.color", "blue");

properties.setProperty("kaptcha.image.width", "125");

properties.setProperty("kaptcha.image.height", "45");

properties.setProperty("kaptcha.session.key", "code");

properties.setProperty("kaptcha.textproducer.char.length", "4");

properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");

Config config=new Config(properties);

defaultKaptcha.setConfig(config);

return defaultKaptcha;

}

}

或者

在resources下创建myKaptcher.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">

<property name="config">

<bean class="com.google.code.kaptcha.util.Config">

<constructor-arg type="java.util.Properties">

<props>

<prop key = "kaptcha.border ">yes</prop>

<prop key="kaptcha.border.color">105,179,90</prop>

<prop key="kaptcha.textproducer.font.color">blue</prop>

<prop key="kaptcha.image.width">100</prop>

<prop key="kaptcha.image.height">50</prop>

<prop key="kaptcha.textproducer.font.size">27</prop>

<prop key="kaptcha.session.key">code</prop>

<prop key="kaptcha.textproducer.char.length">4</prop>

<prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop>

<prop key="kaptcha.textproducer.char.string">23456789ABCEFGHJKMNOPQRSTUVWXYZ</prop>

<prop key="kaptcha.obscurificator.impl">com.google.code.kaptcha.impl.WaterRipple</prop>

<prop key="kaptcha.noise.color">black</prop>

<prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.NoNoise</prop>

<!--<prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.DefaultNoise</prop>-->

<prop key="kaptcha.background.clear.from">185,56,213</prop>

<prop key="kaptcha.background.clear.to">white</prop>

<prop key="kaptcha.textproducer.char.space">3</prop>

</props>

</constructor-arg>

</bean>

</property>

</bean>

</beans>

然后在启动类Application中加载配置

@EnableTransactionManagement// 启动注解事务管理,等同于xml配置方式的 <tx:annotation-driven />

@SpringBootApplication

@EnableScheduling//启动注解定时任务

@MapperScan(basePackages = "com.shawn.mapper")

@ImportResource(locations={"classpath:mykaptcha.xml"})

public class Application extends SpringBootServletInitializer {

public static void main(String[] args) throws Exception {

SpringApplication.run(Application.class, args);

}

}

两种配置方式在springboot中均可;

③KaptchaController

@CommonsLog

@Controller

public class KaptchaController extends BaseController {

@Autowired

private Producer captchaProducer;

@GetMapping("/getKaptchaImage")

public void getKaptchaImage() throws Exception {

response.setDateHeader("Expires", 0);

// Set standard HTTP/1.1 no-cache headers.

response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");

// Set IE extended HTTP/1.1 no-cache headers (use addHeader).

response.addHeader("Cache-Control", "post-check=0, pre-check=0");

// Set standard HTTP/1.0 no-cache header.

response.setHeader("Pragma", "no-cache");

// return a jpeg

response.setContentType("image/jpeg");

// create the text for the image

String capText = captchaProducer.createText();

// store the text in the session

//request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);

//将验证码存到session

session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);

log.info(capText);

// create the image with the text

BufferedImage bi = captchaProducer.createImage(capText);

ServletOutputStream out = response.getOutputStream();

// write the data out

ImageIO.write(bi, "jpg", out);

try {

out.flush();

} finally {

out.close();

}

}

}

3.测试效果

以上是 SpringBoot集成kaptcha验证码 的全部内容, 来源链接: utcz.com/z/358927.html

回到顶部