一、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使用相关推荐

  1. 手把手教你写一个获取短信验证码业务(基于Spring Boot+Redis+阿里云短信服务)

    文章目录 一.阿里云短信环境搭建 1.开启使用子用户,创建用户组和用户 2.开通阿里云短信服务 二.环境测试 1.新建Spring Boot(web)项目,导入依赖 2.在测试类中进行测试 三.真实业 ...

  2. 【Spring Boot组件集成实战】集成Kaptcha谷歌验证码

    更多精彩内容,请访问 Spring Boot组件集成实战专栏 ! 推荐项目:一套基于Spring Boot+Layui的内容管理系统/快速开发脚手架(含完整的开发文档.演示网址等) 文章目录 1. 验 ...

  3. Spring Boot整合Redis笔记

    文章目录 前言 Java 操作 Redis Jedis 操作-测试 Jedis 实例-手机验证码 Redis与Spring Boot整合 整合步骤 Redis 的事务操作 Redis的事务定义 Mul ...

  4. spring boot集成kaptcha图形验证码

    文章目录 环境变化引发的思考 web.xml设置kaptcha图形验证码 config设置kaptcha图形验证码 kaptcha图形验证码完整教程 kaptcha图形验证码属性表 Linux环境下k ...

  5. Spring Boot 整合 Shiro(三)Kaptcha验证码 附源码

    前言 本文是根据上篇<Spring Boot 整合Shiro(二)加密登录与密码加盐处理>进行修改,如有不明白的转上篇文章了解. 1.导入依赖 <!-- https://mvnrep ...

  6. Spring Boot 配置Kaptcha(谷歌验证码工具)(生成验证码、验证验证码)

    1 Kaptcha 1.1 Kaptcha简介 Kaptcha 是一个扩展自simplecaptcha的验证码库,默认情况下,Kaptcha非常易于设置和使用,并且默认输出会产生一个很难验证的验证码. ...

  7. Spring Boot整合Shiro + JSP教程(用户认证,权限管理,图片验证码)

    在此首先感谢**编程不良人**up主提供的视频教程 代码都是跟着up的视频敲的,遇到的一些问题也是通过CSDN博主提供的教程解决的,在此也感谢那些提供bug解决方案的前辈们~ 项目完整代码已经发布到g ...

  8. kaptcha 验证码在spring mvc 中的使用

    转自:http://ttaale.iteye.com/blog/808719 kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的 ...

  9. spring boot 实现发送邮箱验证码

    首先设置一下发件人邮箱,以QQ邮箱为例: 找到帐户,开启POP3/SMTP服务 然后会提醒你怎么去实现,验证完后,会给你一个授权码,记住这个授权码,后端spring boot 会用到 下面回到IDEA ...

最新文章

  1. [微信小程序]时间戳转日期
  2. android核心机制之Zygote启动流程
  3. nodejs中使用worker_threads来创建新的线程
  4. wordpress插件上传的失败原因和处理方案
  5. 1289 大鱼吃小鱼
  6. 网络数据的背后-网络日志的分析指标【转】
  7. 云服务器选ssd还是hdd_SSD和普通硬盘对比?SSD到底好不好?看超变态测试
  8. ssas如何创建分区_如何基于SSAS信息创建Excel报告
  9. linux发布微软消息队列,消息队列RabbitMQ入门与5种模式详解
  10. 网站暴库原理与方法剖析
  11. LayaAir 快捷键设置与资源命名规则
  12. Android入门(三)Activity-生命周期与启动模式
  13. iTOP4412 uboot移植教程
  14. 职称计算机 frontpage 2003,计算机职称考试FrontPage2003考试大纲
  15. [bzoj3887][Usaco2015 Jan]Grass Cownoisseur_trajan_拓扑排序_拓扑序dp
  16. Logistic回归模型C统计量及95%可信区间计算
  17. 说一下HashMap的实现原理?
  18. 爬山法、随机重启爬山法、模拟退火算法对八皇后问题和八数码问题的性能测试...
  19. bit1618c 功能简介_c 9中的新功能简介
  20. WiFi-ESP8266入门http(3-2)网页认证上网-post请求

热门文章

  1. Zookeeper架构
  2. Symbols in Interllij IDEA
  3. 聊聊 iOS 中的网络加密
  4. MySQL的主从复制延迟问题
  5. DXUT框架剖析(12)
  6. andorid service 本地服务
  7. 监控软件nagios之配置文件详解
  8. loadrunner11下载地址
  9. linux fdisk 分区、格式化、挂载
  10. 重新定位开放策略 保卫中国经济版图