在pom.xml引入依赖

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

配置类KaptchaConfig.java

 package com.xiaostudy.shiro_test1.config;

 import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import java.util.Properties; /**
* Created with IntelliJ IDEA.
* User: Administrator
* Date: 2019/7/17
* Time: 23:46
* Description: No Description
*/
@Configuration
public class KaptchaConfig { @Bean
public DefaultKaptcha getDefaultKaptcha(){
DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
Properties properties = new Properties();
// 图片边框,合法值:yes[默认] , no
properties.setProperty("kaptcha.border", "yes");
// 边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue.默认black
properties.setProperty("kaptcha.border.color", "105,179,90");
// 边框厚度,合法值:>0,默认1
// properties.setProperty("kaptcha.border.thickness", "1");
// 图片宽,默认200
properties.setProperty("kaptcha.image.width", "110");
// 图片高,默认50
properties.setProperty("kaptcha.image.height", "40");
// 字体大小,默认40px
properties.setProperty("kaptcha.textproducer.font.size", "30");
// 字体,默认Arial, Courier
properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");
// 字体颜色,合法值: r,g,b 或者 white,black,blue.默认black
properties.setProperty("kaptcha.textproducer.font.color", "blue");
// session key,默认KAPTCHA_SESSION_KEY
properties.setProperty("kaptcha.session.key", "code");
// session date,默认KAPTCHA_SESSION_DATE
// properties.setProperty("kaptcha.session.date", "KAPTCHA_SESSION_DATE");
// 验证码长度,默认5
properties.setProperty("kaptcha.textproducer.char.length", "4");
// 文字间隔,默认2
// properties.setProperty("kaptcha.textproducer.char.space", "2");
// 干扰 颜色,合法值: r,g,b 或者 white,black,blue.默认black
// properties.setProperty("kaptcha.noise.color", "black");
// 更多可参考:https://blog.csdn.net/elephantboy/article/details/52795309 Config config = new Config(properties);
defaultKaptcha.setConfig(config); return defaultKaptcha;
}
}

html使用

<img alt="验证码" onclick = "this.src='/defaultKaptcha?d='+new Date().getTime()" src="/defaultKaptcha" />

验证码请求

/**
* 验证码请求
* @param response
* @param session
* @throws Exception
*/
@RequestMapping("/defaultKaptcha")
public void defaultKaptcha(HttpServletResponse response,HttpSession session) {
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
response.setHeader("Pragma", "no-cache");
response.setContentType("image/jpeg");
String capText = captchaProducer.createText();
//将验证码存到session
session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
BufferedImage bi = captchaProducer.createImage(capText);
try {
ServletOutputStream out = response.getOutputStream();
ImageIO.write(bi, "jpg", out);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}

登录认证验证码

// 从session中拿到正确的验证码
String captchaId = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
// 用户输入的验证码
String parameter = request.getParameter("vrifyCode");
// 下面就是匹配这两个是否相同

springboot集成kaptcha验证码的更多相关文章

  1. springboot 集成kaptcha验证码Demo

    验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人 ...

  2. Springboot整合kaptcha验证码

    01.通过配置类来配置kaptcha 01-01.添加kaptcha的依赖: <!-- kaptcha验证码 --> <dependency> <groupId>c ...

  3. Spring Boot快速集成kaptcha生成验证码

    Kaptcha是一个非常实用的验证码生成工具,可以通过配置生成多样化的验证码,以图片的形式显示,从而无法进行复制粘贴:下面将详细介绍下Spring Boot快速集成kaptcha生成验证码的过程. 本 ...

  4. SpringBoot集成Spring Security(4)——自定义表单登录

    通过前面三篇文章,你应该大致了解了 Spring Security 的流程.你应该发现了,真正的 login 请求是由 Spring Security 帮我们处理的,那么我们如何实现自定义表单登录呢, ...

  5. 使用springboot集成腾讯云短信服务,解决配置文件读取乱码问题

    springboot集成腾讯云短信服务: (1)导入依赖 <dependency> <groupId>org.springframework.boot</groupId& ...

  6. Java实现验证码制作之一Kaptcha验证码

    Kaptcha验证码 是google提供的验证码插件,使用起来相对简单,设置的干扰线以及字体扭曲不易让其他人读取破解. 这里我们需要 导入一个 kaptcha-2.3.jar  下载地址:http:/ ...

  7. 【springBoot】springBoot集成redis的key,value序列化的相关问题

    使用的是maven工程 springBoot集成redis默认使用的是注解,在官方文档中只需要2步; 1.在pom文件中引入即可 <dependency> <groupId>o ...

  8. kaptcha验证码插件的使用

    kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.K ...

  9. kaptcha 验证码组件使用

    kaptcha 验证码组件使用简介   kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.co ...

随机推荐

  1. SqrtTree学习笔记

    散步的时候yy区间最值的不同分块做法,发现单点修改\(O(\sqrt{n})\)查询\(O(1)\)的做法不是很会? 于是yy了一个奇怪做法,写出来看看. 考虑查询的时候两端的散点可以用前后缀最值查出 ...

  2. sql语句之where与having的区别

    where条件查询: 使用 where 可以将表中符合条件的数据筛选出来后,得到查询结果. 语法: select 字段名,……,字段名 from 表名 where 条件表达式; 例: 注意:在条件表达 ...

  3. Pytest权威教程21-API参考-03-夹具(Fixtures)

    目录 夹具(Fixtures) @ pytest.fixture config.cache的 capsys capsysbinary capfd capfdbinary doctest_namespa ...

  4. 深度学习面试题18:网中网结构(Network in Network)

    目录 举例 参考资料 网中网结构通过多个分支的运算(卷积或池化),将分支上的运算结果在深度上连接 举例 一个3*3*2的张量, 与3个1*1*2的卷积核分别same卷积,步长=1, 与2个2*2*2的 ...

  5. JVM Java字节码方法表与属性

    方法表 1.methods_count  method_info,前三个字段和field_info一样 2.方法的属性结构 方法中的每个属性都是一个attribut_info结构 JVM定义了部分at ...

  6. Java 泛型 (Generics)

    泛型:就是变量类型的参数化 泛型是JDK1.5中的一个最重要的特征.通过引入泛型,我们将获得编译时类型的安全和运行时更小的抛出ClassCastException的可能. public class A ...

  7. XAMPP+TestLink

    XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包.这个软件包原来的名字是 LAMPP,但是为了避免误解,最新的几个版本就改名为 XAMPP 了.它可以在Windo ...

  8. 【json/regex】将简单对象生成的json文进行内部排序后再输出

    有这样一个实体类: package com.hy; public class Emp { private int id; private int age; private String name; p ...

  9. 网络分裂 redis 集群

    REDIS cluster-tutorial -- Redis中文资料站 -- Redis中国用户组(CRUG) http://www.redis.cn/topics/cluster-tutorial ...

  10. intel 性能分析

    分析memory bound,etc https://software.intel.com/en-us/articles/intel-vtune-amplifier-tutorials