Kaptcha生成图片验证码

先看结果图。

思路:

        ①进入登录页的时候,前端通过Axios发送GET请求,获取验证码。

        ②后端收到请求后,生成验证码code和该验证码对应的关键字codeKey。

        ③将codeKey和code作为Key,Value保存在Redis中,设置有效期一分钟。

        ④后端将验证码变为图片格式并转换为Base64编码,和codeKey封装成Map返回给前端,前端解析。

        ⑤用户登录时,输入账号、密码和验证码,前端添加上codeKey一并返回给后端,后端拿着codeKey在Redis中查询对应的验证码,判断验证码是否存在,是否正确等,验证码校验不通过返回前端对应报错信息。验证码通过在进行账号密码校验。

        这是基本思路,其次关键代码如下所示。(注意:RedisUtils和ResultUtils文中并未给出,需根据个人习惯编写。)

一、引入Maven依赖

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

 二、编写Kaptcha工具类

import javax.annotation.Resource;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;/*** @ClassName: KaptchaUtils* @Description: 生成验证码图片* @author: 阿长* @date: 2022/12/9 17:27*/
public class KaptchaUtils {@Resourceprivate DefaultKaptcha producer;@Resourceprivate RedisUtils redisUtils;public ResultUtils getCode() throws IOException {// 生成文字验证码String code = producer.createText();System.out.println("code:" + code);// 生成图片验证码ByteArrayOutputStream outputStream = new ByteArrayOutputStream();BufferedImage image = producer.createImage(code);ImageIO.write(image, "jpg", outputStream);// 生成captcha的tokenMap<String, Object> map = new HashMap<>();UUID codeKey = UUID.randomUUID();System.out.println("codeKey:" + codeKey);//保存验证码和对应的keyredisUtils.set("code:" + codeKey, code, TimeUtils.MINUTES);map.put("codeKey", codeKey);map.put("img", Base64.getEncoder().encodeToString(outputStream.toByteArray()));return ResultUtils.success(map);}
}

三、编写Kaptcha配置类

import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import com.hlw.ac.utils.KaptchaUtils;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.Properties;/*** @ClassName: KaptchaConfig* @Description:* @author: 阿长* @date: 2022/12/4 12:44*/@Configuration
public class KaptchaConfig {private final static String CODE_LENGTH = "4";private final static String CODE_BORDER = "no";private final static String CODE_WIDTH = "120";private final static String CODE_HEIGHT = "40";private final static String CODE_FONT_SIZE = "30";private final static String CODE_FONT_COLOR = "black";private final static String CODE_FONT_NAMES = "宋体,楷体,黑体";@Beanpublic DefaultKaptcha producer() {DefaultKaptcha defaultKaptcha = new DefaultKaptcha();Properties properties = new Properties();// 设置边框properties.setProperty("kaptcha.border", CODE_BORDER);// 设置字体颜色properties.setProperty("kaptcha.textproducer.font.color", CODE_FONT_COLOR);// 设置图片宽度properties.setProperty("kaptcha.image.width", CODE_WIDTH);// 设置图片高度properties.setProperty("kaptcha.image.height", CODE_HEIGHT);// 设置字体尺寸properties.setProperty("kaptcha.textproducer.font.size", CODE_FONT_SIZE);// 设置验证码长度properties.setProperty("kaptcha.textproducer.char.length", CODE_LENGTH);// 设置字体properties.setProperty("kaptcha.textproducer.font.names", CODE_FONT_NAMES);Config config = new Config(properties);defaultKaptcha.setConfig(config);return defaultKaptcha;}@Beanpublic KaptchaUtils kaptchaUtils() {return new KaptchaUtils();}}

四、PostMan测试验证

五、BASE64转图片测试

网站链接:https://tool.jisuapi.com/base642pic.html

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

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

相关文章

Kaptcha验证码

Kaptcha验证码 【1】&#xff1a;引包&#xff1a;kaptcha-2.3.2.jar(版本随意) 【2】&#xff1a;applictionContext.xml中的配置 <!-- 验证码 --> <bean id"captchaProducer" class"com.google.code.kaptcha.impl.DefaultKaptcha"> <pr…

Kaptcha 验证码 无噪点 无干扰线 配置

先看 生成的验证码图片例子&#xff1a; 这是原来的样子 KaptchaConfig.java 这个就不用说了吧&#xff0c;使用Kaptcha的基本配置类 package com.xx.config;import com.google.code.kaptcha.NoiseProducer; import com.google.code.kaptcha.impl.DefaultKaptcha; import co…

spring整合kaptcha验证码

验证码在项目肯定会用得到&#xff0c;本案例是在window上运行的&#xff0c;若kaptcha验证码在Linux上显示的是一堆乱码&#xff0c;可能是因为Linux没有中文字体库和中文字体造成的&#xff0c;可进行如下操作&#xff1a; 1. 判断有没有中文字体库&#xff1a; fc-list 2.…

kaptcha html页面验证码,kaptcha验证码使用配置

效果图&#xff1a; 1. 首先加入 kaptcha的jar包在工程中kaptcha-2.3.2.jar和kaptcha-2.3.2-jdk14.jar 2. 配置web.xml&#xff1a;对kaptcha的参数进行配置&#xff1a; Kaptcha com.google.code.kaptcha.servlet.KaptchaServlet kaptcha.border no kaptcha.textproducer.fon…

Cookie、Kaptcha

目录 一、本质 二、Cookie在浏览器和服务器之间的传递 1.没有Cookie的状态 2.创建Cookie对象并返回 三、Cookie时效性 1.理论 2.代码 3.会话和持久化Cookie对比 四、Cookie的domain和path 五、Cookie的应用 六、Kaptcha 1.为什么需要验证码&#xff1f; 2.Kaptcha…

java验证码kaptcha_spring整合kaptcha验证码的实现

kaptcha简介: kaptcha是一个很有用的验证码生成工具&#xff0c;由于它有许多可配置项&#xff0c;所以用它可以简单快捷的生成各式各样的验证码。 开发工具及使用的核心技术: 1、eclipse 2、mybatis 3、spring 4、springmvc 5、kaptcha 本文将介绍kaptcha两种使用方式: 方式一…

SpringBoot 整合 kaptcha + redis 实现 图形验证码登录

一、新建一个SpringBoot 项目&#xff0c;springboot项目创建过程详见 mac idea 创建 springboot 项目_JAVA&#xff24;WangJing的博客-CSDN博客_mac idea创建springboot项目 二、SpringBoot 整合使用 Rdis SpringBoot 项目 添加 redis配置_JAVA&#xff24;WangJing的博客…

10.20扫雷

扫雷 1.构建主函数,方法与三子棋雷同,但是有很多不一样的地方,就是需要构建两个二维数组,一个存放雷的数据,一个存放展现给玩家的数据棋盘 2.在对棋盘分别初始化 时候,考虑到两个二维数组存放内容不同,直接对初始化函数进行添加字符参数 3.构建参数 因为考虑到后期排查雷的时…

扫雷游戏

游戏设计 1.设计两个二维数组的面板&#xff0c;一个是展示给用户使用的&#xff0c;另一个是雷区的面板 2.初始化两个面板&#xff0c;用户使用的面板初始化为‘’&#xff0c;雷区的面板全部初始化为‘0’ 3.设置你所需要的雷区 4.用户输入坐标&#xff0c;进行判断。越界重新…

【180720】微软Windows扫雷游戏代码

源码简介 本源码是一个微软Windows扫雷游戏代码&#xff0c;可选择难度级别&#xff1a;初级、中级、高级。 注意事项: 1、开发环境为Visual Studio 2010&#xff0c;使用.net 2.0开发。 源码下载地址&#xff1a;点击下载 备用下载地址&#xff1a;点击下载

扫雷win10_windows扫雷游戏原来是一道数学难题!

各位同学大家好&#xff0c;这里是质心数学游戏科普频道。 今天和大家聊的是一款有点复古的windows系统自带小游戏——MineSweeper&#xff08;扫雷&#xff09;。 我刚接触这款游戏是高中的上机课&#xff0c;当时的电脑系统还是win95&#xff0c;在大家还不会局域网互联打Sta…

【扫雷】游戏

一、目的 实现一个扫雷游戏 二、过程 1、游戏框架 首先&#xff0c;游戏开始之前&#xff0c;显示游戏菜单Menu() static void Menu() {printf("#############################\n");printf("########欢迎来到扫雷游戏#######\n");printf("######…

扫雷1.0

目录 一.规则介绍 二.基本思路 三.代码实现 一.规则介绍 扫雷是一个经典的游戏&#xff0c;一张棋盘中有许多不确定是雷还是安全区域的格子&#xff0c;当点击之后若没雷则会在该区域显示周围八个格子雷瑟数目&#xff0c;若踩雷则游戏结束。 二.基本思路 1.创建菜单 2.…

扫雷win10_厉害了,一个自动扫雷游戏项目!

转载自公众号【视学算法】 原文&#xff1a;https://www.cnblogs.com/chestnut-egg/p/9302238.html 自动扫雷一般分为两种&#xff0c;一种是读取内存数据&#xff0c;而另一种是通过分析图片获得数据&#xff0c;并通过模拟鼠标操作&#xff0c;这里我用的是第二种方式。 一、…

RK3566 ALC5616录音调试

1.硬件原理图 MIC_P&#xff0c;MIC_N&#xff1a;mic输入。 I2S&#xff1a;总共有5根线&#xff08;这里不是指 i2s 标准接口&#xff09;&#xff1a;两根音频数据线&#xff08;输入/输出&#xff09;、三根时钟线 其中&#xff1a; I2S_LRCK 是指示当前数据线传输的是左声…

comsol with matlab联合仿真

目前网上的教程基本上只有如何找到comsol with Matlab以及如何打开&#xff0c;和部分代码的讲解&#xff0c;但是要真正的跑起来还有一些步骤&#xff0c;小白在这里跟大家分享一下&#xff0c;不对轻喷&#x1f97a; 1.comsol文件需要连接到服务器comsol multiphysics serve…

COMSOL6.0软件安装说明+视频教程

链接&#xff1a;https://pan.baidu.com/s/1a_BaY6K-fP0PiMhcw5eLcg?pwd6iis 提取码&#xff1a;6iis 首先用虚拟光驱加载或者用winrar直接解压镜像文件&#xff0c;再双击setup.exe程序&#xff0c;选择简体中文语言&#xff1b; 2.选择新安装&#xff1b; 3.选择你要安装…

COMSOL 5.2安装教程(自用)

3、允许用户协议&#xff0c;将许可证格式修改为“许可证文件”&#xff0c;然后点击浏览载入安装包中“_SolidSQUAD_”目录下的“Comsol52_SSQ.lic” 电磁 AC/DC 模块RF 模块波动光学模块射线光学模块等离子体模块半导体模块 结构力学 & 声学 结构力学模块非线性结构材料模…

COMSOL在云平台的使用教程,超高效的方法来了

在北鲲云超算平台上有多种COMSOL作业提交方式&#xff0c;这里给大家演示的是图形界面提交 在平台上使用图形界面提交超级简单&#xff0c;平台已内置模板&#xff0c;只需按照提示上传文件及选择选项即可&#xff0c;对于没有代码基础的同学来说&#xff0c;这是最推荐的方式…