Spring Boot利用Kaptcha生成验证码

news2024/11/25 22:17:12

生成验证码

我们在登录或注册某个网站的时候,会需要我们输入验证码,才能登录注册,那么如何生成验证码呢?其实,生成验证码我们可以用Java Swing在后台内存里的区域画一个出来,但是非常麻烦,所以我们选择一些现成的工具——Kaptcha,接下来就看看如何使用这个工具在内存中画出一个验证码(图片),怎么把他发送给浏览器,浏览器怎么显示在登陆页面的位置。

kaptcha

kaptcha 是Google开源的非常实用的自动生成验证码的一个工具,有了它,你可以生成各种样式的验证码。并且使用Kaptcha 生成验证码也十分简单,只需添加jar包,然后配置一下就可以使用。在配置中,可以自己定义验证码字体的大小、颜色、样式;验证码图片的大小、边框、背景;验证码的内容范围;验证码的干扰线等等。

Kaptcha在Spring Boot中的使用

Kaptcha

  • 导入jar包
  • 编写Kaptcha配置类
  • 生成随机字符、生成图片

1. 在pom文件中导入jar包

<!-- Kaptcha Google验证码工具-->
<dependency>
	<groupId>com.github.penggle</groupId>
	<artifactId>kaptcha</artifactId>
	<version>2.3.2</version>
</dependency>

2. Kaptcha配置类

@Configuration
public class KaptchaConfig {

    @Bean
    public Producer kaptchaProducer() {
        Properties properties = new Properties();
        properties.setProperty("kaptcha.image.width","135");
        properties.setProperty("kaptcha.image.height","55");
        properties.setProperty("kaptcha.textproducer.font.size","32");
        properties.setProperty("kaptcha.textproducer.font.color","0,0,0");
        properties.setProperty("kaptcha.textproducer.char.string","0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
        properties.setProperty("kaptcha.textproducer.char.length","4");
        properties.setProperty("kaptcha.noise.impl","com.google.code.kaptcha.impl.NoNoise");

        DefaultKaptcha kaptcha = new DefaultKaptcha();
        Config config = new Config(properties);
        kaptcha.setConfig(config);
        return kaptcha;
    }
}

3. 生成随机字符串、生成图片

在生成验证码之前,我们先看看Kaptcha的核心

在这里插入图片描述
主要就是Producer接口,这个接口中有两个方法,分别是创建验证码图片和生成随机验证码。

编写controller层代码,返回验证码图片并将验证码保存在session中,在用户登录时验证。

/**
* 获取验证码的方法
*/
@GetMapping("kaptcha")
public void getKaptcha(HttpServletResponse response, HttpSession session) {
    // 生成验证码
    String text = kaptchaProducer.createText();
    // 生成图片
    BufferedImage image = kaptchaProducer.createImage(text);

    // 将验证码存入session
    session.setAttribute("kaptcha",text);
    // 将图片输出给浏览器
    response.setContentType("image/png");
    try {
        OutputStream outputStream = response.getOutputStream();
        ImageIO.write(image,"png",outputStream);
    } catch (IOException e) {
        logger.error("响应验证码失败:"+ e.getMessage());
    }
}

在这里插入图片描述

4. JavaScript

<script>
	function refresh_kaptcha() {
		var path = CONTEXT_PATH + "/kaptcha?p=" + Math.random();
		$("#kaptcha").attr("src", path);
	}
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1461161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统——nginx服务介绍

一、Nginx——高性能的Web服务端 Nginx的高并发性能优于httpd服务 1.nginx概述 Nginx是由1994年毕业于俄罗斯国立莫斯科鲍曼科技大学的同学为俄罗斯rambler.ru公司开发的&#xff0c;开发工作最早从2002年开始&#xff0c;第一次公开发布时间是2004年10月4日&#xff0c;版本…

KubeSphere 镜像构建器(S2I)服务证书过期解决方案

目前 KubeSphere 所有 3.x.x 版本&#xff0c;如果开启了 DevOps 模块并使用了镜像构建器功能&#xff08;S2I&#xff09;都会遇到证书过期问题。 解决方法 已开启 DevOps 模块 下载这个更新 S2I 服务证书压缩包&#xff0c;上传到任一可以访问 K8s 集群的节点&#xff1b; …

Java Web(一)--介绍

Java Web 技术体系图 三大组成部分&#xff1a; 前端&#xff1a; 前端开发技术工具包括三要素&#xff1a;HTML、CSS 和 JavaScript&#xff1b;其他高级的前端框架&#xff0c;如bootstrap、jquery&#xff0c;VUE 等。 后端&#xff1a; 后端开发技术工具主要有&am…

PiflowX-组件UnionAll

UnionAll组件 组件说明 Union多个输入源。输入源必须具有相同的字段类型。 计算引擎 flink 组件分组 common 端口 Inport&#xff1a;Any outport&#xff1a;默认端口 组件属性 名称展示名称默认值允许值是否必填描述例子inportsInports“”无否Inports string are…

Atcoder ABC341 A - Print 341

Print 341&#xff08;输出 341&#xff09; 时间限制&#xff1a;2s 内存限制&#xff1a;1024MB 【原题地址】 所有图片源自Atcoder&#xff0c;题目译文源自脚本Atcoder Better! 点击此处跳转至原题 【问题描述】 【输入格式】 【输出格式】 【样例1】 【样例输入1】 …

基于python-socket构建任务服务器(基于socket发送指令创建、停止任务)

在实现ia业务服务器时需要构建一个python-socket客户端&#xff0c;1、要求能与服务器保持心跳连接&#xff0c;每10秒钟发送一次心跳信号&#xff1b;2、要求能根据socket服务器发送的指令创建或终止一个定时任务。 为此以3个类实现该功能&#xff0c;分别为socket通信类&…

Hypervisor是什么

Hypervisor 通常指的是虚拟机监视器&#xff08;VirtualMachine Monitor&#xff09;&#xff0c;它是一种软件或硬件&#xff0c;可以在物理服务器上创建和管理多个虚拟机&#xff08;VirtualMachine&#xff09;。 Hypervisor 提供了一个抽象层&#xff0c;将物理服务器的资源…

基于SpringBoot的农产品智慧物流系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

Redis之缓存击穿问题解决方案

文章目录 一、书接上文二、介绍三、解决方案1. 单例双检锁2. 缓存预热和定时任务 一、书接上文 Redis之缓存雪崩问题解决方案 二、介绍 缓存击穿就是大量并发访问同一个热点数据&#xff0c;一旦这个热点数据缓存失效&#xff0c;则请求压力都来到数据库。 三、解决方案 1…

​LeetCode解法汇总106. 从中序与后序遍历序列构造二叉树

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 描述&#xff1a; 给定两个…

惠尔顿 网络安全审计系统 任意文件读取漏洞复现

0x01 产品简介 惠尔顿网络安全审计产品致力于满足军工四证、军工保密室建设、国家涉密网络建设的审计要求&#xff0c;规范网络行为&#xff0c;满足国家的规范&#xff1b;支持1-3线路的internet接入、1-3对网桥&#xff1b;含强大的上网行为管理、审计、监控模块&#xff1b…

Dockerfile文件中只指定挂载点会发生什么?

当你在VOLUME指令中只指定容器内的路径&#xff08;挂载点&#xff09;而不指定宿主机的目录时&#xff0c;Docker会为该挂载点自动生成一个匿名卷。这个匿名卷存储在宿主机的某个位置&#xff0c;但这个具体位置是由Docker自动管理的&#xff0c;用户通常不需要关心这个存储位…

哪些工具可以改变手机电脑网络IP地址?

在互联网时代&#xff0c;网络已经成为了我们日常生活中不可或缺的一部分。然而&#xff0c;随着网络的普及和技术的不断发展&#xff0c;网络安全问题也日益凸显。为了保护个人隐私和信息安全&#xff0c;我们需要了解一些工具可以改变手机电脑网络IP地址的知识。 首先&#x…

谈谈我对低代码开发平台的理解

目录 一、前言 二、低代码谜团 三、低代码能解决哪些问题 四、好用的低代码平台 五、总结 一、前言 低代码“灵活、快速、低门槛”的标签&#xff0c;为其带来了诸多争议。在低代码平台上是否只能搭建极其简单、无亮点的小功能&#xff1f;低代码带来的“全民程序员”化是…

Java线程池知识点总结

1、线程池优势&#xff1a; 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时&#xff0c;任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程是稀缺资源&#xff0c;如果无限制的创建&#xff0c;不仅会消耗…

Unity MVC开发模式与开发流程详解

在Unity游戏开发中&#xff0c;采用MVC&#xff08;Model-View-Controller&#xff09;模式是一种非常常见的设计模式。MVC模式将应用程序分为三个部分&#xff1a;模型&#xff08;Model&#xff09;、视图&#xff08;View&#xff09;和控制器&#xff08;Controller&#x…

Linux网络编程(三-UDP协议)

目录 一、UDP概述 二、UDP的首部格式 三、UDP缓冲区 四、基于UDP的应用层协议 五、常见问题 一、UDP概述 UDP(User Datagram Protocol&#xff0c;用户数据协议报)是传输层协议&#xff0c;提供不可靠服务&#xff0c;其特点包括&#xff1a; 无连接&#xff1a;知道对端…

手把手教你如何搭建性能测试环境

前言 在进行性能则试前&#xff0c;需要完成性能测试的搭建工作&#xff0c;一般包括硬件环境、软件环境及网络环境&#xff0c;可以要求配置和开发工程师协助完成&#xff0c;但是作为一个优秀性能测试工程师&#xff0c;这也是你的必备技能之一。 性能测试环境与功能测试环…

Apipost多host服务配置如何使用

最近Apipost新增同环境下多host服务的配置功能&#xff0c;本篇文章带来该功能的使用场景及使用方法。 配置方法&#xff1a; 点击右上角眼睛标识进入环境管理 点击添加服务&#xff0c;输入服务名和URL 配置完成后需要在接口目录中选择该目录下需要使用的host服务&#xff0…

w29pikachu-ssrf实例

SSRF简介 SSRF是服务器端请求伪造 危害&#xff1a; 1.可以对服务器所在内网、本地进行端口扫描&#xff0c;获取一些服务的信息等 2.目标网站本地敏感数据的读取 3.内外网主机应用程序漏洞的利用 4.内外网web站点漏洞的利用 ssrf常用的相关协议&#xff1a; gopher://: 发…