当前位置: 首页 > news >正文

Kaptcha验证码

Kaptcha验证码

Kaptcha 是一个用于生成验证码的开源库,在 Java 中使用它可以轻松地为应用程序添加验证码功能。

一、引入依赖

首先,需要在项目的 pom.xml 文件(如果是 Maven 项目)中添加 Kaptcha 的依赖:

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

二、配置 Kaptcha

创建一个配置类来设置 Kaptcha 的属性,例如验证码的宽度、高度、字体、字符数量等:

package com.lhs.config;import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;@Configuration
public class CaptchaConfig {/*** 验证码配置* Kaptcha配置类名*/@Bean@Qualifier("captchaProducer")public DefaultKaptcha kaptcha() {DefaultKaptcha kaptcha = new DefaultKaptcha();Properties properties = new Properties();//		properties.setProperty(Constants.KAPTCHA_BORDER, "yes");//		properties.setProperty(Constants.KAPTCHA_BORDER_COLOR, "220,220,220");//		//properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR, "38,29,12");//		properties.setProperty(Constants.KAPTCHA_IMAGE_WIDTH, "147");//		properties.setProperty(Constants.KAPTCHA_IMAGE_HEIGHT, "34");//		properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE, "25");//		//properties.setProperty(Constants.KAPTCHA_SESSION_KEY, "code");//验证码个数properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");//		properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Courier");//字体间隔properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE,"8");//干扰线颜色//		properties.setProperty(Constants.KAPTCHA_NOISE_COLOR, "white");//干扰实现类properties.setProperty(Constants.KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise");//图片样式properties.setProperty(Constants.KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.WaterRipple");//文字来源properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_STRING, "0123456789");Config config = new Config(properties);kaptcha.setConfig(config);return kaptcha;}
}

三、生成验证码

在需要生成验证码的地方,获取 Kaptcha 实例并生成验证码:

@ApiOperation("获取图形验证码")
@GetMapping("/image")
public void getImage(HttpServletRequest request, HttpServletResponse response){response.setHeader("Cache-Control", "no-store, no-cache");response.setContentType("image/jpeg");String text = kaptcha.createText();String cacheKey = getCacheKey(request);redisTemplate.opsForValue().set(cacheKey,text,CAPTCHA_CODE_EXPIRED, TimeUnit.MILLISECONDS);BufferedImage image = kaptcha.createImage(text);try {ServletOutputStream outputStream = response.getOutputStream();ImageIO.write(image, "jpg",outputStream );outputStream.flush();outputStream.close();} catch (IOException e) {throw new RuntimeException(e);}
}
http://www.lryc.cn/news/392106.html

相关文章:

  • Rufus 制作启动盘 | 便携的工作空间
  • python函数参数
  • 深入理解 XML 和 HTML 之间的区别
  • 代码随想录算法训练营第四十四天|188.买卖股票的最佳时机IV、309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费
  • YOLOv8改进 添加CVPR2024 PKINet中注意力机制CAAttention
  • 油猴Safari浏览器插件:Tampermonkey for Mac 下载
  • 如何在Vue中添加事件监听器
  • 软设之UML图中的用例图
  • 弹性伸缩高性能计算服务一一黑石裸金属服务器
  • 欢乐钓鱼大师攻略:西沙群岛攻略,内置自动辅助云手机!
  • Apipost接口测试工具的原理及应用详解(六)
  • 矩阵的奇异值(Singular Values)
  • 清空flowable的表定义的相关表
  • Tailwind CSS 在vue里 的使用
  • 【人工智能】--强化学习(2.0)
  • 跟着峰哥学java 微信小程序 第二天 封装ES7 + 后端工作
  • QT学习(6)——QT中的定时器事件,两种实现方式;事件的分发event,事件过滤器
  • ASP.NET Core 6.0 使用 Action过滤器
  • Java 并发集合:CopyOnWrite 写时复制集合介绍
  • Linux 查看修改系统时间| date -s
  • 数据库MySQL学习笔记
  • 四端口千兆以太网交换机与 SFP 扩展功能
  • Renderless 思想正在影响前端开发
  • maven 打包执行配置(对maven引用的包或者丢进去的包都包含在里面)打成jar包
  • Python酷库之旅-第三方库Pandas(004)
  • 天猫超市卡怎么用
  • ai智能语音机器人电销系统:让销售更快速高效
  • Redis 中的通用命令(命令的返回值、复杂度、注意事项及操作演示)
  • 【Hive实战】 HiveMetaStore的指标分析
  • 【Linux系统】CUDA的安装与graspnet环境配置遇到的问题