spring boot集成kaptcha实现验证码功能
1、kaptcha简介
kaptcha 是一个非常实用的验证码生成工具。有了它,你可以生成各种样式的验证码,因为它是可配置的。kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.KaptchaServlet,生成一个图片。同时将生成的验证码字符串放到 HttpSession中。
使用kaptcha可以方便的配置:
- 验证码的字体
- 验证码字体的大小
- 验证码字体的字体颜色
- 验证码内容的范围(数字,字母,中文汉字!)
- 验证码图片的大小,边框,边框粗细,边框颜色
- 验证码的干扰线(可以自己继承com.google.code.kaptcha.NoiseProducer写一个自定义的干扰线)
- 验证码的样式(鱼眼样式、3D、普通模糊……当然也可以继承com.google.code.kaptcha.GimpyEngine自定义样式)
2、kaptcha配置详解
# kaptcha.border 是否有边框 默认为true 我们可以自己设置yes,no # kaptcha.border.color 边框颜色 默认为Color.BLACK # kaptcha.border.thickness 边框粗细度 默认为1 # kaptcha.producer.impl 验证码生成器 默认为DefaultKaptcha # kaptcha.textproducer.impl 验证码文本生成器 默认为DefaultTextCreator # kaptcha.textproducer.char.string 验证码文本字符内容范围 默认为abcde2345678gfynmnpwx # kaptcha.textproducer.char.length 验证码文本字符长度 默认为5 # kaptcha.textproducer.font.names 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) # kaptcha.textproducer.font.size 验证码文本字符大小 默认为40 # kaptcha.textproducer.font.color 验证码文本字符颜色 默认为Color.BLACK # kaptcha.textproducer.char.space 验证码文本字符间距 默认为2 # kaptcha.noise.impl 验证码噪点生成对象 默认为DefaultNoise # kaptcha.noise.color 验证码噪点颜色 默认为Color.BLACK # kaptcha.obscurificator.impl 验证码样式引擎 默认为WaterRipple # kaptcha.word.impl 验证码文本字符渲染 默认为DefaultWordRenderer # kaptcha.background.impl 验证码背景生成器 默认为DefaultBackground # kaptcha.background.clear.from 验证码背景颜色渐进 默认为Color.LIGHT_GRAY # kaptcha.background.clear.to 验证码背景颜色渐进 默认为Color.WHITE # kaptcha.image.width 验证码图片宽度 默认为200 # kaptcha.image.height 验证码图片高度 默认为50
3、spring boot集成kaptcha案例
- 新建spring boot maven工程
- 引入依赖的Jar包
-
<!-- 验证码 --> <dependency> <groupId>com.github.axet</groupId> <artifactId>kaptcha</artifactId> <version>0.0.9</version> </dependency>
- 在spring boot启动类添加如下生成验证码配置
-
@Bean public DefaultKaptcha captchaProducer() { DefaultKaptcha captchaProducer = new DefaultKaptcha(); Properties properties = new Properties(); properties.setProperty(Constants.KAPTCHA_BORDER, "yes"); properties.setProperty(Constants.KAPTCHA_BORDER_COLOR, "red"); properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue"); properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE, "50"); properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_NAMES, "宋体,楷体,微软雅黑"); properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4"); properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_STRING, "0123456789"); properties.setProperty(Constants.KAPTCHA_IMAGE_WIDTH, "200"); properties.setProperty(Constants.KAPTCHA_IMAGE_HEIGHT, "50"); properties.setProperty(Constants.KAPTCHA_SESSION_CONFIG_KEY, "code"); Config config = new Config(properties); captchaProducer.setConfig(config); return captchaProducer; }
- 生成验证码的控制类代码如下:
-
package com.xieke.test.springbootkaptchademo; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.google.code.kaptcha.Constants; import com.google.code.kaptcha.Producer; @Controller @RequestMapping("/kaptcha/*") public class CaptchaController { @Autowired private Producer captchaProducer; @RequestMapping public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response) throws Exception { HttpSession session = request.getSession(); String code = (String)session.getAttribute(Constants.KAPTCHA_SESSION_KEY); System.out.println("******************验证码是: " + code + "******************"); 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 session.setAttribute(Constants.KAPTCHA_SESSION_KEY, 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(); } return null; } }
- 启动spring boot程序,自行测试,参考代码已上传至码云:https://gitee.com/xieke90/spring_boot_demo
转载请注明出处: http://xieke90.iteye.com/blog/2425071
相关推荐
vue+springboot+redis+kaptcha实现登录页验证码
主要介绍了spring整合kaptcha验证码的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了Spring boot如何集成kaptcha并生成验证码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在一个web应用中验证码是一个常见的元素。今天给大家介绍一下kaptcha的和springboot一起使用的简单例子。感兴趣的朋友参考下吧
JAVA---Spring Boot qq邮箱验证码注册和登录验证
spring boot 集成rabbit mq 成功demo,spring boot 集成rabbit mq 成功demo
Spring Boot 集成 Nacos + feign + LoadBalancer,实现简单的调用,作为简单的脚手架可以的,同时将Nacos 源码集成进来可以便于调试阅读源码
Spring Boot 集成 JPASpring Boot 集成 JPASpring Boot 集成 JPASpring Boot 集成 JPASpring Boot 集成 JPASpring Boot 集成 JPA
基于 Spring Boot 整合 Kaptcha 实现的图形验证码 Demo,本 Demo 没有涉及到任何数据库的操作,非常适合初学者学习参考,也可以参考我的博客。
web,spring boot 集成帆软,finereport,很简单的例子,欢迎各位指正
了解Spring Boot 2如何与其他Spring API,工具和框架集成 访问Spring MVC和新的Spring Web Sockets,以实现更简单的Web开发 使用微服务进行Web服务开发并与Spring Boot应用程序集成 无缝添加持久性和数据层,使您的...
这两天在研究 Spring boot 集成 ureport 框架,其实我对Spring boot的了解不是很深;为什么想到要集成这个东西?因为有个群里的小伙伴说老是集成不上,然后我上次也是远程帮他弄了很久;嗯,还真的没弄出来,后来他...
spring boot集成kaptcha实现前后台验证码功能
编译器版本:IntelliJ IDEA 2020.3.2 x64 JDK版本:java 1.8.0_111 SpringBoot集成Kaptcha验证码生成器快速入门Demo,演示Kaptcha验证码生成器后端代码和前端测试页面
实现spring-gateway登录验证码校验,使用randomstr参数作为每次生成验证码图片的唯一标识,验证码Kaptcha插件
阅读建议:此资源以开发 Spring Boot 集成 WebSocket 学习其原理和内核,不仅是代码编写实现也更注重内容上的需求分析和方案设计,所以在学习的过程要结合这些内容一起来实践,并调试对应的代码。
内容概要:首先带着读者...阅读建议:此资源以开发 Spring Boot 集成 MinIO 学习其原理和内核,不仅是代码编写实现也更注重内容上的需求分析和方案设计,所以在学习的过程要结合这些内容一起来实践,并调试对应的代码。
Spring Boot整合Spring Batch的一个小例子,在网上发现这方面的资源比较少,特此将其上传供大家学习。
压缩包中有两个集成kafka的项目,第一个是spring boot默认的集成方式kafkaTest1,第二个是springboot集成插件spring-integration-kafka来配置的
Spring Boot集成MyBatis的基础项目 Spring Boot集成MyBatis的基础项目