用法:

可以直接去官网http://code.google.com/p/kaptcha/下载jar,或者在pom.xml中导入

<dependency><groupId>com.google.code.kaptcha</groupId><artifactId>kaptcha</artifactId><version>2.3</version>
</dependency>

或者(两者选其一即可)

<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version>
</dependency>

Kaptcha 详细配置表

常量 描述 默认值
kaptcha.border 图片是否有边框 默认true
kaptcha.border.color 边框颜色
kaptcha.image.width 验证码图片宽 默认200
kaptcha.image.height 验证码图片高 默认50
kaptcha.textproducer.font.size 验证码文本字符大小 默认为40
kaptcha.session.key

session key

KAPTCHA_SESSION_KEY

kaptcha.textproducer.char.length 验证码文本字符长度 默认为5
kaptcha.textproducer.font.names 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
kaptcha.obscurificator.impl 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy
kaptcha.textproducer.impl 验证码文本生成规则
kaptcha.textproducer.char.space 验证码文本字符间距 默认为2
kaptcha.noise.color 验证码干扰颜色 默认为Color.BLACK
kaptcha.noise.impl 干扰实现类com.google.code.kaptcha.impl.NoNoise
kaptcha.background.impl 背景实现类 com.google.code.kaptcha.impl.DefaultBackground
kaptcha.producer.impl

图片实现类

com.google.code.kaptcha.impl.DefaultKaptcha

kaptcha.textproducer.impl

文本实现类

com.google.code.kaptcha.text.impl.DefaultTextCreator

kaptcha.textproducer.char.string 文本集合
kaptcha.background.clear.from  背景颜色渐变,开始颜色
kaptcha.background.clear.to 背景颜色渐变, 结束颜色
kaptcha.session.date

session date

KAPTCHA_SESSION_DATE

业务代码

@Service
public class CaptchaService extends BaseService {// 对应CaptchaConfig 定义的bean name@Resource(name = "captchaProducerMath")private Producer captchaProducerMath;@AutowiredRedisOps redisOps;/*** 生成图片验证码*/public DataRespBean<Map<String, Object>> getPictureCaptcha(HttpServletResponse response) throws IOException {String uuid = UUID.randomUUID().toString();String capStr = null, code = null;BufferedImage image = null;// 生成验证码String capText = captchaProducerMath.createText();//截取结果capStr = capText.substring(0, capText.lastIndexOf("@"));code = capText.substring(capText.lastIndexOf("@") + 1);image = captchaProducerMath.createImage(capStr);//结果存入redis,key为uuid 超时时间5分钟redisOps.set(RedisUtil.pictureCaptchaKey(uuid), code, 5 * 60); // 5分钟// 转换流信息写出FastByteArrayOutputStream outputStream= new FastByteArrayOutputStream();Map<String, Object> map = new HashMap<>();try {ImageIO.write(image, "jpg", outputStream);} catch (IOException e) {return new DataRespBean(ResultCodeMsg.SERVER_ERROR.getErrMsg(), e.getMessage());}finally {map.put("uuid", uuid);map.put("img", Base64Encoder.encode(outputStream.toByteArray()));os.close();}return new DataRespBean<>(map);}
}

验证码生成规则(根据实际需求修改)

public class KaptchaTextCreator extends DefaultTextCreator {private static final String[] NUMBER= "0,1,2,3,4,5,6,7,8,9,10".split(",");@Overridepublic String getText() {Integer result = 0;//结果Random random = new Random();int x = random.nextInt(10);int y = random.nextInt(10);StringBuilder chinese = new StringBuilder();int randomop = (int) random.nextInt(4)//判断结果生成加减乘除switch (randomoperands){case 0 :result = x * y;chinese.append(NUMBER[x]);chinese.append("*");chinese.append(NUMBER[y]);break;case 1 :if (!x == 0 && y % x == 0) {result = y / x;chinese.append(NUMBER[y]);chinese.append("/");chinese.append(NUMBER[x]);} else {result = x + y;chinese.append(NUMBER[x]);chinese.append("+");chinese.append(NUMBER[y]);}break;case 2 :if (x >= y) {result = x - y;chinese.append(NUMBER[x]);chinese.append("-");chinese.append(NUMBER[y]);} else {result = y - x;chinese.append(NUMBER[y]);chinese.append("-");chinese.append(NUMBER[x]);}break;default:result = x + y;chinese.append(NUMBER[x]);chinese.append("+");chinese.append(NUMBER[y]);}//拼接结果返回suChinese.append("=?@" + result);return suChinese.toString();}

生成图片验证码配置

@Configuration
public class CaptchaConfig {@Bean(name = "captchaProducerMath")public DefaultKaptcha getKaptchaBeanMath() {DefaultKaptcha defaultKaptcha = new DefaultKaptcha();Properties properties = new Properties();// 图片边框properties.setProperty(KAPTCHA_BORDER, "yes");// 边框颜色properties.setProperty(KAPTCHA_BORDER_COLOR, "105,179,90");// 文本颜色properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue");// 图片宽度 properties.setProperty(KAPTCHA_IMAGE_WIDTH, "130");// 图片高度 properties.setProperty(KAPTCHA_IMAGE_HEIGHT, "32");// 文本字符大小properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_SIZE, "28");// KAPTCHA_SESSION_KEYproperties.setProperty(KAPTCHA_SESSION_CONFIG_KEY, "KAPTCHA_SESSION_KEY");// 验证码文本生成器properties.setProperty(KAPTCHA_TEXTPRODUCER_IMPL, "对应自己的KaptchaTextCreator 文件路径");// 文本字符间距 properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "3");// 文本字符长度properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6");// 文本字体样式properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier");// 干扰颜色properties.setProperty(KAPTCHA_NOISE_COLOR, "white");// 干扰实现类properties.setProperty(KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise");// 图片样式properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy");Config config = new Config(properties);defaultKaptcha.setConfig(config);return defaultKaptcha;}
}

返回结果(jpg base64编码)

效果展示

spring boot 图文验证码(Kaptcha)使用相关推荐

  1. Spring Boot实现验证码功能

    ✨Spring Boot实现验证码功能 验证码的作用 案例要求 前端页面准备 随机验证码工具类 后端控制器 测试

  2. Spring Boot中验证码实现kaptcha

    要生成验证码网上的方案比较多,基本是基于两大类:1为自定义生成,操作用Image类,2为kaptcha生成,有模糊算法. 当然也可以直接交由前端进行处理 1.基于kaptcha 首先不要怀疑的是报名是 ...

  3. spring boot实现验证码登录

    内容比较简单,需要完整项目的朋友留下邮箱,给你们发. 直接看效果: 下面是实现步骤 1.验证码生成工具类(引用自网络) package com.laoxu.test.helloweb.util;imp ...

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

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

  5. spring boot 使用javaMailSender 发送qq邮箱验证码

    一 qq邮箱设置 1登录邮箱打开设置 2点击账号 3开启 POP3/SMTP服务 4保存密钥(这个一定要保存后面在java里面要调用) 二. spring boot代码设置 1.maven导入jar包 ...

  6. 39 Spring Boot Shiro权限管理【从零开始学Spring Boot】

    [视频 & 交流平台] à SpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008& ...

  7. Spring Boot Shiro视频 - 身份认证准备工作

    [视频 & 交流平台] à SpringBoot视频 http://study.163.com/course/introduction.htm?courseId=1004329008& ...

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

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

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

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

最新文章

  1. springMVC静态资源访问不到
  2. sql 拆分_技术分享 | 基于分布式中间件的SQL改造指南
  3. Oracle创建数据库(手动)
  4. Oracle数据类型(转)
  5. 网站关键词排名骤降的原因及解决办法
  6. python课程与c+课程有什么不同-Python学习之二:Python 与 C 区别
  7. 网页设计过程中一般命名规则
  8. 天津理工上机c语言报告5,天津理工大学c语言上机报告7.doc
  9. nnlm 中的 Softmax
  10. Android studio快捷键大全 和 eclipse对照(原)
  11. 修改Sql Server 2000数据库名称
  12. 谷歌云端语音识别软件
  13. “会用LabVIEW,但是却没有听说TestStand,好像有点说不过去吧!”(下)
  14. 软件工程:NFR与NFP
  15. 从生活中领悟设计模式(Python)
  16. 自动化有道云笔记自动签到+看广告奖励
  17. 汉语言01C1501,2019年北京自考汉语言文学(本科)专业(01C1501)要考哪些科目?...
  18. 免费注册 上传html,一些可以免费上传文件的网站
  19. (转)Java用native2ascii命令做unic…
  20. 读书笔记——Photoshop设计精讲精练

热门文章

  1. 邓宁-克鲁格效应的理解
  2. 哈佛凌晨四点半——生活感悟
  3. 汉诺塔递归算法 python实现
  4. 【机器学习周志华】读书笔记 P3 机器学习发展历程(选读)
  5. VS2022软件C语言安装
  6. 动手搭建自己的web服务器
  7. 权威发布:餐饮vi设计公司十强榜单排名
  8. php中sql语句字符串截取字符串,sql语句的截取字符串下标是从1开始
  9. Java语言实现的扫雷游戏(二)
  10. 用户在离开计算机锁定功能,短暂离开也不怕 轻松锁定保护用户隐私