kaptcha验证码实现,配合spring boot使用
一、kaptcha介绍
Kaptcha是谷歌放在github上的一个验证码jar包,我们可以简单配置属性实现验证码的验证功能。
kaptcha参数设置如下所示:
Constant 描述 默认值
kaptcha.border 图片边框,合法值:yes , no yes
kaptcha.border.color 边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue. black
kaptcha.border.thickness 边框厚度,合法值:>0 1
kaptcha.image.width 图片宽 200
kaptcha.image.height 图片高 50
kaptcha.producer.impl 图片实现类 com.google.code.kaptcha.impl.DefaultKaptcha
kaptcha.textproducer.impl 文本实现类 com.google.code.kaptcha.text.impl.DefaultTextCreator
kaptcha.textproducer.char.string 文本集合,验证码值从此集合中获取 abcde2345678gfynmnpwx
kaptcha.textproducer.char.length 验证码长度 5
kaptcha.textproducer.font.names 字体 Arial, Courier
kaptcha.textproducer.font.size 字体大小 40px.
kaptcha.textproducer.font.color 字体颜色,合法值: r,g,b 或者 white,black,blue. black
kaptcha.textproducer.char.space 文字间隔 2
kaptcha.noise.impl 干扰实现类 com.google.code.kaptcha.impl.DefaultNoise
kaptcha.noise.color 干扰颜色,合法值: r,g,b 或者 white,black,blue. black
kaptcha.obscurificator.impl 图片样式: 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影
com.google.code.kaptcha.impl.ShadowGimpy com.google.code.kaptcha.impl.WaterRipple
kaptcha.background.impl 背景实现类 com.google.code.kaptcha.impl.DefaultBackground
kaptcha.background.clear.from 背景颜色渐变,开始颜色 light grey
kaptcha.background.clear.to 背景颜色渐变,结束颜色 white
kaptcha.word.impl 文字渲染器 com.google.code.kaptcha.text.impl.DefaultWordRenderer
kaptcha.session.key session key KAPTCHA_SESSION_KEY
kaptcha.session.date session date KAPTCHA_SESSION_DATE
二、实现
1、引入maven依赖
<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version> </dependency>
2、编写配置类
1 package com.example.demo.config; 2 3 import com.google.code.kaptcha.impl.DefaultKaptcha; 4 import com.google.code.kaptcha.util.Config; 5 import org.springframework.context.annotation.Bean; 6 import org.springframework.context.annotation.Configuration; 7 8 import java.util.Properties; 9 10 /** 11 * @author zsh 12 * @company wlgzs 13 * @create 2019-03-10 9:37 14 * @Describe CaptchaConfig配置类 15 */ 16 @Configuration 17 public class CaptchaConfig { 18 19 @Bean(name = "captchaProducer") 20 public DefaultKaptcha getKaptchaBean(){ 21 DefaultKaptcha defaultKaptcha=new DefaultKaptcha(); 22 Properties properties=new Properties(); 23 properties.setProperty("kaptcha.border", "yes"); 24 properties.setProperty("kaptcha.border.color", "105,179,90"); 25 properties.setProperty("kaptcha.textproducer.font.color", "blue"); 26 properties.setProperty("kaptcha.image.width", "125"); 27 properties.setProperty("kaptcha.image.height", "45"); 28 properties.setProperty("kaptcha.session.key", "code"); 29 properties.setProperty("kaptcha.textproducer.char.length", "5"); 30 properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑"); 31 Config config=new Config(properties); 32 defaultKaptcha.setConfig(config); 33 return defaultKaptcha; 34 } 35 36 }
3、编写controller类
package com.example.demo;import com.google.code.kaptcha.impl.DefaultKaptcha; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream;/*** @author zsh* @company wlgzs* @create 2019-03-10 9:41* @Describe Captcha测试controller*/ @Controller public class CaptchaController {@AutowiredDefaultKaptcha defaultKaptcha;/*** 显示验证码* @param request* @param response* @throws Exception*/@RequestMapping("/defaultKaptcha")public void defaultKaptcha(HttpServletRequest request, HttpServletResponse response) throws Exception {byte[] captchaChallengeAsJpeg = null;ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();try {//生产验证码字符串并保存到session中String createText = defaultKaptcha.createText();request.getSession().setAttribute("verifyCode", createText);//使用生产的验证码字符串返回一个BufferedImage对象并转为byte写入到byte数组中BufferedImage challenge = defaultKaptcha.createImage(createText);ImageIO.write(challenge, "jpg", jpegOutputStream);} catch (IllegalArgumentException e) {response.sendError(HttpServletResponse.SC_NOT_FOUND);return;}//定义response输出类型为image/jpeg类型,使用response输出流输出图片的byte数组captchaChallengeAsJpeg = jpegOutputStream.toByteArray();response.setHeader("Cache-Control", "no-store");response.setHeader("Pragma", "no-cache");response.setDateHeader("Expires", 0);response.setContentType("image/jpeg");ServletOutputStream responseOutputStream =response.getOutputStream();responseOutputStream.write(captchaChallengeAsJpeg);responseOutputStream.flush();responseOutputStream.close();}@PostMapping("/verifyCode")public String imgverifyControllerDefaultKaptcha(Model model, HttpSession session, String verifyCode) {String captchaId = (String) session.getAttribute("verifyCode");System.out.println("验证码是:" + captchaId);System.out.println("用户输入的是:" + verifyCode);if (!captchaId.equals(verifyCode)) {System.out.println("输入错误");model.addAttribute("info", "错误的验证码");} else {System.out.println("输入正确");model.addAttribute("info", "正确");}return "/index";}@GetMapping("/")public ModelAndView test() {return new ModelAndView("index");}}
4、编写测试页面
1 -------------Kaptcha验证码 2 <h1 th:text="${info}"/> 3 <div> 4 <img alt="验证码" onclick="this.src='/defaultKaptcha?d='+new Date()*1" src="/defaultKaptcha"/> 5 </div> 6 <form action="/verifyCode" method="post"> 7 <input type="text" name="verifyCode"/> 8 <input type="submit" value="提交"/> 9 </form>
5、效果
转载于:https://www.cnblogs.com/zsh-blogs/p/10504431.html
kaptcha验证码实现,配合spring boot使用相关推荐
- 手把手教你写一个获取短信验证码业务(基于Spring Boot+Redis+阿里云短信服务)
文章目录 一.阿里云短信环境搭建 1.开启使用子用户,创建用户组和用户 2.开通阿里云短信服务 二.环境测试 1.新建Spring Boot(web)项目,导入依赖 2.在测试类中进行测试 三.真实业 ...
- 【Spring Boot组件集成实战】集成Kaptcha谷歌验证码
更多精彩内容,请访问 Spring Boot组件集成实战专栏 ! 推荐项目:一套基于Spring Boot+Layui的内容管理系统/快速开发脚手架(含完整的开发文档.演示网址等) 文章目录 1. 验 ...
- Spring Boot整合Redis笔记
文章目录 前言 Java 操作 Redis Jedis 操作-测试 Jedis 实例-手机验证码 Redis与Spring Boot整合 整合步骤 Redis 的事务操作 Redis的事务定义 Mul ...
- spring boot集成kaptcha图形验证码
文章目录 环境变化引发的思考 web.xml设置kaptcha图形验证码 config设置kaptcha图形验证码 kaptcha图形验证码完整教程 kaptcha图形验证码属性表 Linux环境下k ...
- Spring Boot 整合 Shiro(三)Kaptcha验证码 附源码
前言 本文是根据上篇<Spring Boot 整合Shiro(二)加密登录与密码加盐处理>进行修改,如有不明白的转上篇文章了解. 1.导入依赖 <!-- https://mvnrep ...
- Spring Boot 配置Kaptcha(谷歌验证码工具)(生成验证码、验证验证码)
1 Kaptcha 1.1 Kaptcha简介 Kaptcha 是一个扩展自simplecaptcha的验证码库,默认情况下,Kaptcha非常易于设置和使用,并且默认输出会产生一个很难验证的验证码. ...
- Spring Boot整合Shiro + JSP教程(用户认证,权限管理,图片验证码)
在此首先感谢**编程不良人**up主提供的视频教程 代码都是跟着up的视频敲的,遇到的一些问题也是通过CSDN博主提供的教程解决的,在此也感谢那些提供bug解决方案的前辈们~ 项目完整代码已经发布到g ...
- kaptcha 验证码在spring mvc 中的使用
转自:http://ttaale.iteye.com/blog/808719 kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的 ...
- spring boot 实现发送邮箱验证码
首先设置一下发件人邮箱,以QQ邮箱为例: 找到帐户,开启POP3/SMTP服务 然后会提醒你怎么去实现,验证完后,会给你一个授权码,记住这个授权码,后端spring boot 会用到 下面回到IDEA ...
最新文章
- [微信小程序]时间戳转日期
- android核心机制之Zygote启动流程
- nodejs中使用worker_threads来创建新的线程
- wordpress插件上传的失败原因和处理方案
- 1289 大鱼吃小鱼
- 网络数据的背后-网络日志的分析指标【转】
- 云服务器选ssd还是hdd_SSD和普通硬盘对比?SSD到底好不好?看超变态测试
- ssas如何创建分区_如何基于SSAS信息创建Excel报告
- linux发布微软消息队列,消息队列RabbitMQ入门与5种模式详解
- 网站暴库原理与方法剖析
- LayaAir 快捷键设置与资源命名规则
- Android入门(三)Activity-生命周期与启动模式
- iTOP4412 uboot移植教程
- 职称计算机 frontpage 2003,计算机职称考试FrontPage2003考试大纲
- [bzoj3887][Usaco2015 Jan]Grass Cownoisseur_trajan_拓扑排序_拓扑序dp
- Logistic回归模型C统计量及95%可信区间计算
- 说一下HashMap的实现原理?
- 爬山法、随机重启爬山法、模拟退火算法对八皇后问题和八数码问题的性能测试...
- bit1618c 功能简介_c 9中的新功能简介
- WiFi-ESP8266入门http(3-2)网页认证上网-post请求