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

spring boot整合kaptcha验证码

引入依赖

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

创建验证码生成配置类 KaptchaConfig.java

@Configuration
public class KaptchaConfig {@Beanpublic DefaultKaptcha kaptcha() {DefaultKaptcha kaptcha = new DefaultKaptcha();Properties properties = new Properties();// 配置验证码生成属性properties.setProperty("kaptcha.border", "no");properties.setProperty("kaptcha.textproducer.font.color", "black");// 更多配置属性...Config config = new Config(properties);kaptcha.setConfig(config);return kaptcha;}
}

创建验证码接口 CaptchaController.java

@Autowiredprivate DefaultKaptcha kaptcha;@GetMapping("/captcha")public ResponseEntity<byte[]> generateCaptcha(HttpServletRequest request) {// 生成验证码String text = kaptcha.createText();BufferedImage image = kaptcha.createImage(text);try {ByteArrayOutputStream baos = new ByteArrayOutputStream();ImageIO.write(image, "jpg", baos);baos.flush();HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.IMAGE_JPEG);// 将验证码存储到会话中,以便后续校验HttpSession session = request.getSession();session.setAttribute("captcha", text);return new ResponseEntity<>(baos.toByteArray(), headers, HttpStatus.OK);} catch (IOException e) {return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);}}

前端

<template><div><img :src="captchaUrl" alt="captcha"><input v-model="inputCaptcha" placeholder="请输入验证码"><button @click="verifyCaptcha">提交</button></div>
</template><script>
import axios from 'axios';export default {data() {return {captchaUrl: '',    // 验证码图片地址inputCaptcha: '',  // 用户输入的验证码captchaId: ''      // 验证码唯一标识符};},mounted() {this.generateCaptcha();  // 页面加载时生成验证码},methods: {generateCaptcha() {axios.get('/captcha').then(response => {this.captchaUrl = 'data:image/jpeg;base64,' + response.data.image;this.captchaId = response.data.captchaId;}).catch(error => {console.error(error);});},verifyCaptcha() {axios.post('/captcha/verify', {captchaId: this.captchaId,captcha: this.inputCaptcha}).then(response => {console.log('验证码校验成功');// TODO: 验证码校验成功后的处理}).catch(error => {console.error('验证码校验失败');// TODO: 验证码校验失败后的处理});}}
};
</script>

注:

校验验证码的方法写在登录请求token中会更好。

相关文章:

spring boot整合kaptcha验证码

引入依赖 <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version> </dependency>创建验证码生成配置类 KaptchaConfig.java Configuration public class KaptchaConf…...

【Linux下6818开发板(ARM)】在液晶屏上显示RGB颜色和BMP图片

(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误&#x…...

React的hooks---useLayoutEffect

useLayoutEffect 与 useEffect 类似&#xff0c;与 useEffect 在浏览器 layout 和 painting 完成后异步执行 effect 不同的是&#xff0c;它会在浏览器布局 layout 之后&#xff0c;painting 之前同步执行 effect useLayoutEffect 的执行时机对比如下&#xff1a; import Rea…...

北京创业孵化器汇总

北京创业孵化器汇总 1 创客总部实验室技术孵化平台 人工智能 海淀区中关村大街18号B座0909室 2 中孵高科 医药健康 经济技术开发区科创十四街99号D座9层 3 九州众创孵化器 医药健康 大兴区广平大街9号6幢等2幢 4 北京大学人工智能产业化孵化平台 国家级/市级 人工智能 中关村…...

电信软件的过去、现在和未来:推动核心网发展的关键力量

目录 导语&#xff1a;过去&#xff1a;从基础功能到增强服务现在&#xff1a;软件定义网络和智能化运营SDNNFV 未来&#xff1a;5G和物联网的挑战与机遇结束语 导语&#xff1a; 电信软件是支撑电信核心网运营的重要组成部分&#xff0c;它们在过去几十年中经历了巨大的变革。…...

2023年全国程序员薪酬排行天梯榜

文章目录 ⭐️ 2023年全国程序员薪酬排行天梯榜 在过去很长的一段时间内&#xff0c;网上总有一个声音&#xff1a;“大厂裁员”、“程序员内卷严重”、“程序员人员过盛”、“35岁中年危机”、“码农吃的青春饭”、“互联网寒冬” 等等等等。 讲道理&#xff0c;我对这种人为的…...

设计模式-工厂模式

定义 工厂模式是用来创建对象的一种最常用的设计模式&#xff0c;不暴露创建对象的具体逻辑&#xff0c;而是将将逻辑封装在一个函数中&#xff0c;那么这个函数就可以被视为一个工厂 其就像工厂一样重复的产生类似的产品&#xff0c;工厂模式只需要我们传入正确的参数&#…...

HummerRisk V1.3.0 发布

HummerRisk V1.3.0发布&#xff1a; 大家好&#xff0c;HummerRisk 1.3.0和大家见面了&#xff0c;在这个版本中我们继续在多云接入管理、多云检测方式、云资源态势方面提供新的能力&#xff0c;并增加了新的镜像仓库支持类型&#xff0c;并优化了云的区域选择、优化规则组内容…...

SkyWalking链路追踪中Trace概念以及Trace与span的关系

基本概念 在SkyWalking链路追踪中&#xff0c;Trace&#xff08;追踪&#xff09;是指一个请求或者一个操作从开始到结束的完整路径。它涵盖了分布式系统中所有相关组件的调用关系和性能信息。 具体来说&#xff0c;Trace包含了一系列的span&#xff08;跨度&#xff09;&…...

美容店预约小程序制作教程详解

现在&#xff0c;制作一个专属于美容店的预约小程序不再需要编程经验&#xff0c;通过乔拓云网提供的后台管理系统&#xff0c;你可以轻松地完成整个制作过程。下面&#xff0c;我将为你详细介绍如何DIY一个美容店预约小程序。 首先&#xff0c;登录乔拓云网的后台管理系统&…...

什么是内存泄漏及如何防护内存泄漏

目录 前言 什么是内存泄漏示例一示例二特殊版本 总结/结尾 前言 最近阅读量很低啊(⁠ ⁠≧⁠Д⁠≦⁠) 什么是内存泄漏 内存泄漏&#xff08;Memory Leak&#xff09;指在程序运行过程中&#xff0c;分配的内存空间在不再使用后未被正确释放或回收&#xff0c;导致这部分内存…...

【libuv】httpserver启用ssl 及 播放的日志打印

VLC vlc 第一次 接收不安全的证书黑屏。重启服务,再次vlc这次次好像就可以了。main debug: processing request item: zhangbin.flv, node: 播放列表, skip: 0 main debug: rebuilding array of current - root 播放列表 main debug: rebuild done - 2 items, index 1 main de…...

13、ffmpeg使用nvidia显卡对OAK深度相机进行解码和编码

基本思想&#xff1a;简单使用nvidia的硬件解码进行oak相机的编码和解码学习 一、在本机rtx3060配置好显卡驱动和cuda之后进行下面操作50、ubuntu18.04&20.04CUDA11.1cudnn11.3TensorRT7.2/8.6Deepsteam5.1vulkan环境搭建和YOLO5部署_ubuntu18.04安装vulkan_sxj731533730的…...

自动化测试如何做?搭建接口自动化框架从0到1实战(超细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 传统软件测试行业…...

安装Python之后 安装库报错 There was an error checking the latest version of pip.

报错代码 & 图片如下 Looking in indexes: https://pypi.tuna.tsicmdnghua.edu.cn/simple WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by NewConnectionError(<pip._vendor.urllib3.connection.HT…...

"科技与狠活"企业级无代码开发MES系统,一周实现数字化

随着科技的不断发展&#xff0c;企业级无代码开发平台成为了一种新型的解决方案&#xff0c;能够有效降低软件开发门槛&#xff0c;提升开发效率。在制造业领域&#xff0c;MES系统&#xff08;Manufacturing Execution System&#xff09;作为一种关键的生产管理工具&#xff…...

超实用的品牌软文推广方案分享,纯干货

品牌软文推广对于企业来说是一项关键且重要的战略&#xff0c;如何通过软文推广提高品牌的知名度、美誉度和影响力&#xff0c;成为了许多企业关注的问题。本文伯乐网络传媒将从多个角度深度探讨品牌软文推广方案&#xff0c;为企业提供一些有价值的参考。 一、确定品牌软文推广…...

网络安全(黑客)8大工具

1.Nmap 它是网络管理员 必用的软件之一&#xff0c;以及用以评估网络系统安全。正如大多数被用于网络安全的工具&#xff0c;nmap 也是不少黑客及骇客&#xff08;又称脚本小子 &#xff09;爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器&#xff…...

重启Linux服务器 Oracle 数据库步骤

在一次重启数据库的时候&#xff0c;没有正确按照步骤重启数据库&#xff0c;导致服务器重启。 正确步骤及详解&#xff1a; (1) su - oracle 打开Xshell&#xff0c;连接到数据库所在的linux机器。若用户为root&#xff0c;请输入命令“su - oracle”并回车&#xff0c;若要…...

kaggle新赛:Bengali.AI 语音识别大赛赛题解析

赛题名称&#xff1a;Bengali.AI Speech Recognition 赛题链接&#xff1a;https://www.kaggle.com/competitions/bengaliai-speech 赛题背景 竞赛主办方 Bengali.AI 致力于加速孟加拉语&#xff08;当地称为孟加拉语&#xff09;的语言技术研究。Bengali.AI 通过社区驱动的…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日&#xff0c;中天合创屋面分布式光伏发电项目顺利并网发电&#xff0c;该项目位于内蒙古自治区鄂尔多斯市乌审旗&#xff0c;项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站&#xff0c;总装机容量为9.96MWp。 项目投运后&#xff0c;每年可节约标煤3670…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发&#xff0c;使用DevEco Studio作为开发工具&#xff0c;采用Java语言实现&#xff0c;包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

aardio 自动识别验证码输入

技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”&#xff0c;于是尝试整合图像识别与网页自动化技术&#xff0c;完成了这套模拟登录流程。核心思路是&#xff1a;截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...