Kaptcha生成验证码【SpringBoot版】

SpringBoot整合kaptcha(谷歌验证码工具)实现验证码功能 SpringBoot整合kaptcha(谷歌验证码工具)实现验证码功能,kaptcha是Google提供的一个图形验证码插件,有了它,你可以通过简单的配置生成各种样式的验证码。 阅读详情

话不多说直接上代码吧


首先引入Kaptcha的依赖

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

然后这里通过java配置Kaptcha

import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

import java.util.Properties;

/**
 *
 - @author IBean
 - @date 2018/8/9
 **/
@Component
public class KaptchaConfig {
    @Bean
    public DefaultKaptcha getDefaultKaptcha() {
        com.google.code.kaptcha.impl.DefaultKaptcha defaultKaptcha = new com.google.code.kaptcha.impl.DefaultKaptcha();
        Properties properties = new Properties();
        properties.setProperty("kaptcha.border", "yes");
        properties.setProperty("kaptcha.border.color", "105,179,90");
        properties.setProperty("kaptcha.image.width", "125");
        properties.setProperty("kaptcha.image.height", "38");
        properties.setProperty("kaptcha.textproducer.char.length", "4");
        properties.setProperty("kaptcha.textproducer.font.size", "32");
        properties.setProperty("kaptcha.textproducer.font.names", "宋体,楷体,微软雅黑");
        properties.setProperty("kaptcha.textproducer.font.color", "white");
        properties.setProperty("kaptcha.noise.color", "black");
        properties.setProperty("kaptcha.background.clear.from", "102,153,153");
        properties.setProperty("kaptcha.background.clear.to", "183,234,112");
        properties.setProperty("kaptcha.obscurificator.impl", "com.google.code.kaptcha.impl.ShadowGimpy");

        Config config = new Config(properties);
        defaultKaptcha.setConfig(config);

        return defaultKaptcha;
    }
}
  • 首先别忘了@Component,还有@Bean,这样后续才能通过@Autowired进行注入
  • 了解一下配置吧
    1.kaptcha.border 边框相关,就是图片有没有边
    2.kaptcha.border.color 边框颜色
    3.kaptcha.image.width 生成的图片宽度
    4.kaptcha.image.height 生成的图片高度
    5.kaptcha.textproducer.char.length 生成的验证码里字符的个数
    6.啊不想写了,我再写最后一个
    7.kaptcha.obscurificator.impl生成验证码,我理解的就是样式,有三种,水纹,鱼眼,阴影com.google.code.kaptcha.impl.ShadowGimpy,我用的就是这个阴影,感觉这个显示效果最好
  • 其余配置emmm百度一下吧


    接下来是获取验证码的部分

    private DefaultKaptcha defaultKaptcha; //上边那个那个配置
    @Autowired
    public KaptchaController(DefaultKaptcha defaultKaptcha) {
        this.defaultKaptcha = defaultKaptcha;
    }
    /**
     * 获取验证码 的 请求路径
     *
     * @throws Exception
     */
    @RequestMapping("/vaildCode")
    @ResponseBody
    public void defaultKaptcha() {
        ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
        OutputStream out = null;
        try {
            //生产验证码字符串并保存到session中
            String createText = defaultKaptcha.createText();
            //这个createText其实可以随便写然后下面createImage都会显示在验证码的图片里,不过我没试过中文。
            //当然写个数学表达式或者其他骚操作都行啊,然后把答案放到session(vrifyCode)里就好啦
            request.getSession().setAttribute("vrifyCode", createText);
            //使用生产的验证码字符串返回一个BufferedImage对象并转为byte写入到byte数组中
            BufferedImage challenge = defaultKaptcha.createImage(createText);
            ImageIO.write(challenge, "jpg", jpegOutputStream);
            //定义response输出类型为image/jpeg类型,使用response输出流输出图片的byte数组
            byte[] captchaChallengeAsJpeg = jpegOutputStream.toByteArray();

            response.setHeader("Cache-Control", "no-store");
            response.setHeader("Pragma", "no-cache");
            response.setDateHeader("Expires", 0);
            response.setContentType("image/jpeg");
            out = response.getOutputStream();
            out.write(captchaChallengeAsJpeg);
            out.flush();
        } catch (Exception e) {
            logger.error(e.getMessage());
        } finally {
            try {
                jpegOutputStream.close();
                if (out != null) {
                    out.close();
                }
                System.gc();
            } catch (IOException e) {
                logger.error(e.getMessage());
            }
        }
    }

@ResponseBody这个必须加哦,某篇博文我简单的解释了下

前端部分
<img class="vaildImg" alt="验证码" style="cursor:pointer;">

//初始化的时候加载验证码
$('.vaildImg').attr('src', '/vaildCode?d=' + (new Date()).getTime());
//点击图片切换验证码
$('.vaildImg').click(function () {
    $(this).attr('src', '/vaildCode?d=' + (new Date()).getTime());
});

然后就好了
然后就没了
然后我也不知道该写啥了
不出意外这个就好使了
话说只有没钱才会本地生成验证码吧
不过能用就好啦b( ̄▽ ̄)d 

SpringBoot中使用kaptcha依赖实现图片验证码生成及校验 1.SpringBoot中集成kaptcha <!-- 引入图形验证码依赖 --> <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> 阅读详情

相关推荐

kaptcha-2.3.2.zip:深入探索图形验证码开源项目

本文还有配套的精品资源,点击获取 简介:kaptcha-2.3.2.zip是一个用于生成图形验证码的开源项目库,它提供高效的集成解决方案。该项目包含多种jar包以适应不同Java环境,并附有详细的文档、源代码和API文档,支持Web服务部署。学习和使用kaptcha可以帮助开发者深入了解验证码技术并提升Java编程能力,同时也为网站提供安全保障。 1. 开源图形验...

weixin_42601134的博客 1204

引用的三方组件已经升级到最新版本,仍然提醒存在安全风险,如何快速解决—— kaptcha 安全漏洞

kaptcha 是个图形验证码的库,使用该组件的人数也非常多,搜 “spring 验证码”,前几篇文章里面就有人在教如何使用这个组件(2022年的文章),国内 star 比较多的项目同样也在用。该组件风险程度较高,CVSS 评分达9.8,建议使用该组件的项目及研发小伙伴尽快修复该组件。 在找解决方案的时候发现,官方没有发布修复后的版本,最新版本就是2.3.2。近期有很多小伙伴问了个相同的问题:引用的组件已经是最新版本了,检测还是有漏洞,这样的只能换依赖了吗...2、搜索相关漏洞的解决方案​​​​​​​。

OSCS开源安全社区 2304

Kaptcha近期成熟版本

Kaptcha是一个基于SimpleCaptcha的验证码开源项目。 https://code.google.com/p/kaptcha/w/list

DefaultKaptcha生成验证码

DefaultKaptcha生成验证码

weixin_60589038的博客 2127

ST7789P3初始化配置

【代码】ST7789P3初始化配置。

zqq_1314的博客 4148

保姆级教程:在RK3588开发板上编译带MPP硬件加速的FFmpeg(含完整依赖库配置)

本文提供在RK3588开发板上编译支持MPP硬件加速的FFmpeg的详细教程,涵盖交叉编译环境搭建、MPP框架及依赖库配置,最终实现4K视频硬件编解码性能优化。通过实战步骤和性能对比,展示如何充分发挥RK3588的硬件加速能力。

weixin_30839881的博客 418

Maven - 解决无法安装 Kaptcha 依赖的问题

3.查找自己的maven本地仓库的位置,根据验证码的pom文件的引用地址新建文件夹,比如说:com.google.code.kaptcha,那就在${maven_direction}/com/google/code/kaptcha,其中maven_direction是maven的本地仓库地址,一直查找文件夹,不存在那就创建名字一样的文件夹,这里看到Kaptcha的版本是2.3.0,改为2.3.2 ,验证码框架,没有上传到maven的中央仓库,所有通过常规的pom文件导入依赖下载是无法使用的。

qq_37131747的博客 1047

CTFshow-pwn入门-前置基础pwn32-pwn34

CTFshow-pwn入门-前置基础pwn32-pwn34

你们de4月天的博客 1130

使用 SpringBoot + kaptcha 生成、校对 验证码

一、前言验证码这么常见,想必不用多说了。最近做项目要用到验证码,也参考了网上很多方法,唯有下面方法感觉是最简单的,使用的是 Google 的 kaptcha 框架。二、功能演示三、代码1、代码结构2、pom(SpringBoot+thymeleaf+web+kaptcha ) 注意引入 kaptcha 的 Maven 依赖 &amp;lt;!-- https://mvnrepository.co

IT小村 1万+

硬件笔记——HDMI接口

HDMI可以同时传输视频信号、音频信号和控制信号。其中高速信号有四组:从Data TX到Data RX有3组差分数据信号(TMDS_DATA0~2)和一组差分时钟信号(TMDS_CLOCK)。以及若干低速线。脚编号信号名称信号类型功能说明1热插拔检测连接状态检测。接收端通过此引脚向源端发送高电平信号,通知其已连接并可以开始读取EDID。2UTILITY车载用途悬空3TMDS数据通道2差分信号正极,用于传输视频像素、音频和数据包。4TMDS数据2屏蔽。

2501_94625908的博客 537

CVE-2021-3156本地提权漏洞复现

受影响版本 sudo: 1.8.2 - 1.8.31p2 sudo: 1.9.0 - 1.9.5p1 测试 我这里是在本地centos7上进行测试。 需要目标机器上存在python编译器、目标主机出网或者能上传文件到目标主机。 以非root用户登录系统,并运行如下命令: sudoedit -s / 通常响应一个以 sudoedit: / 开头的报错,多半存在漏洞。 利用 提权脚本: https://www.o2oxy.cn/wp-content/uploa

The current road is different, love needs to distinguish between right and wrong 3776

SpringBoot 中使用 Kaptcha 验证码生成器

Kaptcha 介绍 验证码(CAPTCHA):是 Completely Automated Public Turing test to tell Computers and Humans Apart(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。 作用:可以防止 恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破...

傲凝的博客 4858

一文吃透 SAP HANA SDA:把分散数据当作本地数据来用的那把钥匙

摘要:SAP HANA SDA(Smart Data Access)技术详解:150字精要 SAP HANA SDA是一种数据虚拟化技术,允许在不复制数据的情况下访问远端数据源。核心功能包括: 通过Remote Source定义连接配置 创建Virtual Table作为本地代理 支持谓词下推优化查询性能 与SDI技术协同工作扩展数据集成能力 典型应用场景包括: 跨系统联邦查询 冷热数据分层管理 混合云数据整合 远程表复制(RTR)实现近实时数据同步 实施要点: 需关注适配器能力差异 合理运用查询下推优化

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 318

使用 Kaptcha 生成验证码图片

本文将介绍如何在 Spring Boot 项目中使用 Kaptcha 生成验证码图片,并演示如何自定义验证码的内容、字体、扭曲程度等设置。Kaptcha 的 Constants 类是一个包含许多常量的类,用来管理验证码生成过程中所涉及的一些常用配置项。Kaptcha 是一个轻量级的 Java 库,能够生成各种类型的验证码图片,广泛应用于 Web 系统中。通过引用这些常量,能够使配置更加规范并减少错误。通过使用这些常量配置,我们不仅避免了硬编码,还能统一管理和调整验证码的设置,提升代码的可维护性和可读性。

qq_50134188的博客 1629

从零构建爬虫抓取故宫数字文物库:Python最新实战技术详解

熟悉了动态内容加载的网页结构解析技巧。掌握了 Playwright + BeautifulSoup 的组合用法。实现了从网页→JSON→详情→图像的完整数据闭环。掌握了结构化保存与可视化分析能力。

2201_76125261的博客 1305

RLHF 家族的奇巧魔改:On Policy 与 Off Policy 路线大PK

无论是 On Policy 还是 Off Policy,RLHF 家族的“魔改”之路都充满了奇思妙想。相信随着研究的深入,RLHF 技术将会在 Alignment 领域发挥越来越重要的作用。

步子哥的博客 2081

SpringBoot:kaptcha生成验证码

SpringBoot:kaptcha生成验证码,介绍如何将kaptcha框架集成到SpringBoot项目中,并进行简单的验证码生成使用。

席木木的博客 1374

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

SpringBoot整合Kaptcha实现图形验证码

SpringBoot整合Kaptcha实现图形验证码

DaenCode的博客 950

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

SpringBoot中使用kaptcha生成验证码

kaptcha是谷歌开源的简单实用的验证码生成工具。通过设置参数,可以自定义验证码大小、颜色、显示的字符等等。

qq_31906861的博客 1263

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

spingboot集成kaptcha验证码

前言 kaptcha是一个非常实用的验证码生成工具。有了它,你可以生成各种样式的验证码,因为它是可配置的。 springboot集成kaptcha 一 、pom文件引入kaptcha依赖 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha...

qq_37209293的博客 24万+

SpringBoot整合Kaptcha(图形验证码)

本篇博客主要总结 Spring Boot 整合 Kaptcha 来实现图片验证码。本篇会以一个 Demo 为例,以 Spring Boot 为基础架构,不涉及任何有关数据库的操作以及前端炫酷界面的实现,方便初学者学习整理。

小异常的博客 3689

验证码 kaptcha之springboot用法

在我们用户登录的时候,为了安全性考虑,会增加验证码的功能,这里采用的是google的kaptcha;spirngboot是轻便,独立,使得基于spring的应用开发变得特别简单。网上有很多介绍springboot的有点,这里不多说。言归正抓,讲下登陆时验证码结合springboot的用法 引入kaptcha所需要的jar包,我这里用的是maven com.github.penggle

waiting的专栏 1万+

Springboot整合kaptcha验证码

Springboot整合kaptcha验证码 01、通过配置类来配置kaptcha 01-01、添加kaptcha的依赖: <!-- kaptcha验证码 --> <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </

qq_38231598的博客 1643

SpringBoot整合Kaptcha验证码

SpringBoot整合Kaptcha验证码 Kaptcha 简介 Kaptcha 是一个可高度配置的实用验证码生成工具,可自由配置的选项如: 验证码的字体 验证码字体的大小 验证码字体的字体颜色 验证码内容的范围(数字,字母,中文汉字!) 验证码图片的大小,边框,边框粗细,边框颜色 验证码的干扰线 验证码的样式(鱼眼样式、3D、普通模糊、...) Kaptcha 详细配置表 ...

wildcat-的博客 853

springboot:集成Kaptcha实现图片验证码

springboot:集成Kaptcha实现图片验证码

拒绝熬夜啊的博客 1832

SpringBoot 集成 kaptcha 验证码插件

kaptcha : 验证码插件,可以使用它生成自定义的验证码 1. kaptcha 依赖 <!-- kaptcha 验证码开源组件 --> <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> ...

assiduous_me的博客 1998
上一篇: Springboot thymeleaf 异常:getOutputStream() has already been called for this response 解决
下一篇: SpringBoot 返回Json实体类属性大小写问题
IBeanCN
博客等级 码龄10年 9粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值