1. baomidou提供的kaptcha-spring-boot-starter

pom

<dependency><groupId>com.baomidou</groupId><artifactId>kaptcha-spring-boot-starter</artifactId><version>1.1.0</version>
</dependency>

自定义验证码参数,以下为默认配置, yml配置

kaptcha:height: 50width: 200content:length: 4source: abcdefghjklmnopqrstuvwxyz23456789space: 2font:color: blackname: Arialsize: 40background-color:from: lightGrayto: whiteborder:enabled: truecolor: blackthickness: 1

controlller

import com.baomidou.kaptcha.Kaptcha;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** 生成验证码服务** @author liuxb* @date 2022/5/18 15:17*/
@RestController
@RequestMapping("/kaptcha")
public class KaptchaController {@Autowiredprivate Kaptcha kaptcha;/*** 获取Kaptcha验证码,返回前端图片流*/@GetMapping("/kaptchaImg")public void kaptchaImg() {//默认900秒 15min有效期kaptcha.render();}/*** 验证验证码** @param code 验证码* @return*/@GetMapping("/valid")public boolean validDefaultTime(String code) {//default timeout 900 secondsreturn kaptcha.validate(code);}/*** 校验验证码是否在指定时间内有效* @param code*/@GetMapping("/validCustomTime")public boolean validCustomTime(String code) {return kaptcha.validate(code, 60);}
}

2. com.github.penggle封装的kaptcha

pom

<!-- Kaptcha验证码组件-->
<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version>
</dependency>

配置类

import com.google.code.kaptcha.util.Config;@Configuration
public class KaptchaConfig {@Beanpublic DefaultKaptcha getDefaultKaptcha() {DefaultKaptcha defaultKaptcha=new DefaultKaptcha();Properties properties=new Properties();//是否有边框properties.setProperty(Constants.KAPTCHA_BORDER,"yes");//验证码文本颜色properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR,"blue");//验证码图片宽度properties.setProperty(Constants.KAPTCHA_IMAGE_WIDTH,"160");//验证码图片高度properties.setProperty(Constants.KAPTCHA_IMAGE_HEIGHT,"60");//文本字符大小properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE,"38");//验证码session的值properties.setProperty(Constants.KAPTCHA_SESSION_CONFIG_KEY,"kaptchaCode");//验证码文本长度properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH,"4");//字体properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_NAMES, "宋体,楷体,微软雅黑");Config config = new Config(properties);defaultKaptcha.setConfig(config);return defaultKaptcha;}
}

controller
···java
@Controller
public class KaptchaController {
@Resource
private Producer kaptchaProducer;

@GetMapping("verify_code")
public void createVerifyCode(HttpServletRequest request, HttpServletResponse response) throws IOException {//响应立即过期response.setDateHeader("Expires", 0);//不缓存任何图片数据response.setHeader("Cache-Control", "no-store,no-cache,must-revalidate");response.setHeader("Cache-Control", "post-check=0,pre-check=0");response.setHeader("Pragma", "no-cache");response.setContentType("image/png");//生成验证码字符文本String verifyCode = kaptchaProducer.createText();request.getSession().setAttribute("kaptchaVerifyCode", verifyCode);System.out.println(request.getSession().getAttribute("kaptchaVerifyCode"));BufferedImage image = kaptchaProducer.createImage(verifyCode);//创建验证图片ServletOutputStream out = response.getOutputStream();ImageIO.write(image, "png", out);//输出和关闭输出out.flush();out.close();
}

/**
*校对验证码
* @param httpServletRequest
* @return
*/
@RequestMapping(value = “login”, method = RequestMethod.POST)
public boolean CheckDefaultKaptcha(@RequestBody LoginTwoVo loginTwoVo, HttpServletRequest request){
//得到session里面的,key为“vrifyCode”的value值
String captchaId = (String)request.getSession().getAttribute(“kaptchaVerifyCode”);
//输出该value值和自己测试时填写的值
System.out.println((“Session vrifyCode ---->” + captchaId + “---- form code —>” + loginTwoVo.getCode()));
//判断session里面的验证码与自己填写的值是否一致
if (!captchaId.equals(loginTwoVo.getCode())) {
System.out.println((“错误的验证码”));
return false;
} else {
//判断账号和密码是否一致
if(loginTwoVo.getUserName().equals(“wsw”)&&loginTwoVo.getPassword().equals(“123456”)){
System.out.println(“登录成功”);
return true;
}
return false;
}
}
}
····

kaptcha 验证码相关推荐

  1. kaptcha验证码实现,配合spring boot使用

    一.kaptcha介绍 Kaptcha是谷歌放在github上的一个验证码jar包,我们可以简单配置属性实现验证码的验证功能. kaptcha参数设置如下所示: Constant 描述 默认值 kap ...

  2. kaptcha验证码组件使用简介

    kaptcha验证码组件使用简介 Kaptcha是一个基于SimpleCaptcha的验证码开源项目. 官网地址:http://code.google.com/p/kaptcha/ kaptcha的使 ...

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

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

  4. java kaptcha_java相关:kaptcha验证码使用方法详解

    java相关:kaptcha验证码使用方法详解 发布于 2020-6-7| 复制链接 摘记: 本文为大家分享了kaptcha验证码的使用方法,供大家参考,具体内容如下1.首先在pom.xml文件中导入 ...

  5. Springboot整合kaptcha验证码

    Springboot整合kaptcha验证码 01.通过配置类来配置kaptcha 01-01.添加kaptcha的依赖: <!-- kaptcha验证码 --> <dependen ...

  6. springboot集成kaptcha验证码

    导入依赖 <!-- kaptcha 验证码开源组件 --> <dependency><groupId>com.github.penggle</groupId& ...

  7. Gateway + Redis整合Kaptcha验证码

    引言 验证码的作用: 防止自动化代码(爬虫,恶意脚本)来直接发送请求 确认用户信息的真实性 1. pom依赖 <dependency><groupId>org.springfr ...

  8. Spring MVC 中使用 Google kaptcha 验证码

    验证码是抵抗批量操作和恶意登录最有效的方式之一. 验证码从产生到现在已经衍生出了很多分支.方式.google kaptcha 是一个非常实用的验证码生成类库. 通过灵活的配置生成各种样式的验证码,并将 ...

  9. Java笔记-编码方式创建kaptcha验证码

    这里使用编码的方式调用kaptcha实现验证码功能 程序运行截图如下: 输入错误后,还是这个界面,但输入正确后: maven如下: <?xml version="1.0" e ...

  10. Java笔记-使用Kaptcha验证码框架

    使用Kaptcha这个验证码框架用起来,比自己写简单 首先设置maven项目: <dependency><groupId>com.github.penggle</grou ...

最新文章

  1. 什么才是程序员摸鱼的最高境界?
  2. Hibernate的关联关系映射
  3. 深入源码 UITableView 复用技术原理分析
  4. jquery post 返回php,如何在成功的AJAX / jQuery POST上返回PHP变量
  5. java: jmap 查看内存信息
  6. mybatis 多租户saas_MybatisPlus 多租户架构(SaaS)实现
  7. [紧急问题和解决方案] 无法打开被权限管理服务(RMS)加密的Office 2003文档
  8. 三、常用行内元素与块元素
  9. android 入门-android Studio 配置
  10. 记一次线上Zabbix对Redis监控实录
  11. iOS开发UI篇—简单的浏览器查看程序
  12. wps带阴影的边框怎么设置_WPS表格阴影边框如何设置,手把手教你如何设置
  13. 社会工程学利用的人性_社会工程学利用的人性弱点包括
  14. Python请求webserver服务用到的suds、suds-jurko、zeep库相关踩坑指南
  15. python笔记:7.2.2.2 一元多因素方差分析_交互效应(购房面积影响因素交互效应)
  16. java中怎么复制集合_Java中List集合间的复制
  17. Objective-C 程序设计(第4版)
  18. linux启动项加命令,启动项 命令(linux 添加开机启动项的三种方法)
  19. OpenCV开发笔记(五十八):红胖子8分钟带你深入了解图像的矩(图文并茂+浅显易懂+程序源码)
  20. Codeforces Round #772 (Div. 2) CF1635ABCDEF

热门文章

  1. Android:GPS卫星定位
  2. 用c语言软件制作监察病毒,弄了个病毒。用的是C语言,大家看看!
  3. 利用com.googlecode.libphonenumber解析手机号归属地
  4. 2020中兴捧月算法大赛参赛总结
  5. mysql-front 8.0_使用SQL-Front启动MySQL8.0报错
  6. konika电视一直显示android,康佳多屏互动电视端下载
  7. 软件定义网络带来新的自动化优势和挑战
  8. vue中使用粒子特效
  9. 社会网络分析中的基本概念
  10. 微信模拟地理位置_微信伪装地理位置是什么个原理