【kaptcha】kaptcha验证码的使用-SpringBoot集成
Kaptcha验证码的依赖
<dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version>
</dependency>
Kaptcha验证码的配置类,对验证码的一些属性进行配置,根据项目更改
/*** 验证码工具kaptcha的配置类*/
@Configuration
public class CaptchaConfig {/*** 配置Producer接口的实现类DefaultKaptcha的bean对象,该对象用于生成验证码图片;* 并给其指定生成的验证码图片的设置项;bean对象的id引用名为captchaProducer;*/@Bean(name = "captchaProducer")public DefaultKaptcha getKaptchaBean() {DefaultKaptcha defaultKaptcha = new DefaultKaptcha();Properties properties = new Properties();//是否有边框 默认为true 我们可以自己设置yes,noproperties.setProperty("kaptcha.border", "yes");//边框颜色 默认为Color.BLACKproperties.setProperty("kaptcha.border.color", "105,179,90");//验证码文本字符颜色 默认为Color.BLACKproperties.setProperty("kaptcha.textproducer.font.color", "blue");//验证码图片宽度 默认为200properties.setProperty("kaptcha.image.width", "120");//验证码图片高度 默认为50properties.setProperty("kaptcha.image.height", "40");//验证码文本字符大小 默认为40properties.setProperty("kaptcha.textproducer.font.size", "32");//KAPTCHA_SESSION_KEYproperties.setProperty("kaptcha.session.key", "kaptchaCode");//验证码文本字符间距 默认为2properties.setProperty("kaptcha.textproducer.char.space", "4");//验证码文本字符长度 默认为5properties.setProperty("kaptcha.textproducer.char.length", "4");//验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)properties.setProperty("kaptcha.textproducer.font.names", "Arial,Courier");//验证码噪点颜色 默认为Color.BLACKproperties.setProperty("kaptcha.noise.color", "gray");Config config = new Config(properties);defaultKaptcha.setConfig(config);return defaultKaptcha;}
}
简单使用Katcha(简单运用,如果避免redis被刷库,可以自己加逻辑)
@RequestMapping("/captcha/captchaImage")public void captchaImage(HttpServletResponse response){//1.生成验证码文本String text = producer.createText();Logger logger =Logger.getLogger(text);logger.info(text);//2.生成验证码图像,获取BufferedImage类型对象BufferedImage bufferedImage = producer.createImage(text);//3.把验证码内容存入redisredisTemplate.opsForValue().set(text,"",60*30,TimeUnit.SECONDS);response.setContentType("image/jpeg");try(ServletOutputStream out = response.getOutputStream();){ImageIO.write(bufferedImage,"jpg",out);}catch (Exception e){e.printStackTrace();}}
ImageIO这个类可以把生成的验证码BufferedImage对象转换成outputStream流对象,这里不用return
相关文章:
【kaptcha】kaptcha验证码的使用-SpringBoot集成
Kaptcha验证码的依赖 <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version> </dependency> Kaptcha验证码的配置类,对验证码的一些属性进行配置&#x…...
golang template模板嵌套语法 为何不能使用变量 底层源码解析
我们都知道在golang的模板语法中,我们可以使用template关键字嵌套其他模块, 如: {{template "模板文件名" .}} 然而,这里的 “模板文件名” 是不能使用变量的! 注意这里最后的的 . 这个实际上是templa…...
【Linux】线程Thread
🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 线程概述 …...
RAG技术:在自然语言处理中的深度融合与创新
在自然语言处理(NLP)领域,随着技术的不断进步,我们见证了各种创新方法的涌现。其中,检索增强生成(Retrieval-Augmented Generation,简称RAG)技术以其独特的优势,逐渐成为…...
什么是std::bind
2024年6月29日,周日下午 std::bind 是一个C11标准库中的函数,它用于将一个函数或函数对象与特定的参数绑定在一起,生成一个新的函数对象。 std::bind通常和std::function一起使用,因为std::function可以作为一个函数容器来接收st…...
C语言的数据结构:树与二叉树(哈夫曼树篇)
前言 上篇讲完了二叉树,二叉树的查找性能要比树好很多,如平衡二叉树保证左右两边节点层级相差不会大于1,其查找的时间复杂度仅为 l o g 2 n log_2n log2n,在两边层级相同时,其查找速度接近于二分查找。1w条数据&am…...
docker 安装syslog
Syslog-ng是一个可靠、多功能的日志管理系统,用于收集日志并将其转发到指定的日志分析工具。 使用Docker CLI方式搭建 步骤 1: 拉取Syslog-ng镜像 首先,需要从Docker Hub拉取Syslog-ng的官方镜像。 docker pull balabit/syslog-ng:latest 步骤 2: 启动…...
什么是无头浏览器?
简而言之,无头浏览器是没有图形用户界面 (GUI) 的 Web 浏览器。GUI 包括用户与之交互的数字元素,例如按钮、图标和窗口。但是,关于无头浏览器,您需要了解的还有很多。 在本文中,您将了解什么是…...
【面试干货】与的区别:位运算符与逻辑运算符的深入探讨
【面试干货】&与&&的区别:位运算符与逻辑运算符的深入探讨 1、&:位运算符2、&&:逻辑运算符3、&与&&的区别 💖The Begin💖点点关注,收藏不迷路💖 & 和 …...
搭建Renesas R7FA8D1BHECBD-BTB的开发调试环境(DAP-LINK: N32G45XVL-STB)
目录 概述 1 软硬件 1.1 软硬件环境信息 1.2 开发板信息 1.3 调试器信息 2 FSP和KEIL产生测试项目 2.1 FSP生成项目 2.2 Keil中配置 3 硬件连接框图 4 一个测试案例 4.1 功能介绍 4.2 定时器函数 5 测试 搭建Renesas R7FA8D1BHECBD-BTB的开发调试环境(…...
探索人工智能和LLM对未来就业的影响
近年来,人工智能(AI)迅猛发展,引发了人们的兴奋,同时也引发了人们对就业未来的担忧。大型语言模型(LLM)就是最新的例子。这些强大的人工智能子集经过大量文本数据的训练,以理解和生成…...
钓鱼网站原理与攻防
知识点:LAMP平台部署,Web架构分析,钓鱼网站原理与搭建 中间件: 中间件是一种独立的软件,位于客户机和服务器之间,主要用于在网络环境中进行数据的传输和通信。它充当客户端和服务端之间的桥梁,…...
Windows 中 Chrome / Edge / Firefox 浏览器书签文件默认存储路径
1. Chrome 浏览器 按组合键 Win R,打开运行对话框,输入 %USERPROFILE%\AppData\Local\Google\Chrome\User Data\Default或在Chrome 浏览器地址栏输入 chrome://version查看【个人资料路径】 2. Edge 浏览器 按组合键 Win R,打开运行对…...
秋招Java后端开发冲刺——关系型数据库篇(Mysql)
本文介绍关系型数据库及其代表Mysql数据库,并介常见面试题目。 一、数据库概述 1. 数据库(Database, DB):是长期储存在计算机内的、有组织的、可共享的数据集合。 2. 数据库管理系统(Database Management System, D…...
DHCP原理1-单个局域网出现多个DHCP服务器会发生什么
1. 背景 DHCP全称是Dynamic Host Configuration Protocol。其协议标准是RFC1541(已被RFC2131取代),主要实现服务器向客户端动态分配IP地址(如IP地址、子网掩码、网关、DNS)和配置信息。其系统架构是标准的C/S架构。RFC…...
24/06/29(21.1205)程序的编译和链接
源文件 ---> 可执行文件,这一过程要执行的流程: 预处理 编译 汇编 链接 组成每一个程序的每个源文件通过编译过程分别转换成目标代码;每个目标代码由链接器捆绑在一起,形成一个单一而完整的可执行程序;链接器同时也会引入标准函数库中任何被该程序所用到的函数,而且它可以…...
使用Java Executors框架处理并发任务
一、并发与Java Executors框架简介 一、并发编程的重要性 并发编程是现代编程中最重要的概念之一。在更多的核心和更快的处理器出现的今天,如何充分利用这些资源就变得异常重要。并发编程允许你的程序同时处理多个任务,从而使程序更有效地利用系统资源,提高执行效率。 提…...
LeetCode:经典题之144、94、145、102题解及延伸|二叉树的遍历|前中后层序遍历|Morris算法
系列目录 88.合并两个有序数组 52.螺旋数组 567.字符串的排列 643.子数组最大平均数 150.逆波兰表达式 61.旋转链表 160.相交链表 83.删除排序链表中的重复元素 389.找不同 1491.去掉最低工资和最高工资后的工资平均值 896.单调序列 206.反转链表 92.反转链表II 141.环形链表 …...
ONLYOFFICE 桌面编辑器 8.1全新发布,更强大的编辑工具
ONLYOFFICE 8.1 一、什么是ONLYOFFICE?二、怎么安装 ONLYOFFICE 8.1三、主要功能介绍四、总结 一、什么是ONLYOFFICE? ONLYOFFICE 是一款功能强大的办公套件,旨在提供全面的文档、表格和演示文稿编辑解决方案。它集成了文字处理、电子表格和演…...
百日筑基第六天-了解一下Dubbo
百日筑基第六天-了解一下Dubbo Dubbo 是一款高性能、轻量级的开源 WEB 和 RPC 框架。 Dubbo 提供了六大核心能力: 面向接口代理的高性能 RPC 调用。智能容错和负载均衡。服务自动注册和发现。高度可扩展能力。运行期流量调度。可视化的服务治理与运维。 简单来说…...
Qwen3-TTS多语言语音合成实测:一键部署,生成10种语言的逼真语音
Qwen3-TTS多语言语音合成实测:一键部署,生成10种语言的逼真语音 1. 开篇:语音合成新体验 想象一下,只需输入一段文字,就能让电脑用10种不同语言"开口说话",而且声音自然得几乎分辨不出是机器生…...
宠物店主的福音:用LongCat一键生成宠物服装电商主图,省时省力
宠物店主的福音:用LongCat一键生成宠物服装电商主图,省时省力 1. 为什么宠物店主需要AI图片编辑工具 开宠物店的朋友们都知道,商品主图的质量直接影响销量。一件宠物小衣服,如果只是平铺拍摄或者随便套在模特身上,很…...
为什么MedNeXt能超越Transformer?揭秘大卷积核在医学图像分割中的独特优势
MedNeXt如何用大卷积核重塑医学图像分割?技术优势全解析 当你在深夜的医院影像科,看着屏幕上模糊的CT扫描图,试图从那些灰度渐变中分辨出肿瘤边界时,是否会想过AI模型眼中的世界?医学图像分割——这个决定患者治疗方案…...
提升开发效率:Android Studio零障碍IDE本地化配置指南
提升开发效率:Android Studio零障碍IDE本地化配置指南 【免费下载链接】AndroidStudioChineseLanguagePack AndroidStudio中文插件(官方修改版本) 项目地址: https://gitcode.com/gh_mirrors/an/AndroidStudioChineseLanguagePack 开发人员在使用…...
Graphormer企业级应用:制药公司分子筛选流水线中的轻量部署实践
Graphormer企业级应用:制药公司分子筛选流水线中的轻量部署实践 1. 项目背景与价值 在药物研发领域,分子筛选是耗时耗力的关键环节。传统实验方法需要数月时间才能完成数千种化合物的性质测试,而基于AI的分子属性预测技术可以将这一过程缩短…...
RePKG终极指南:Wallpaper Engine资源提取与转换的完整解决方案
RePKG终极指南:Wallpaper Engine资源提取与转换的完整解决方案 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾经遇到过这样的问题?在Wallpaper Eng…...
Android位置模拟与GPS伪装:基于Xposed模块的场景化解决方案
Android位置模拟与GPS伪装:基于Xposed模块的场景化解决方案 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 在移动应用开发与隐私保护领域,位置信息的精准…...
OpenClaw赋能金融投研:17个高效应用案例详解
扫描下载文档详情页: https://www.didaidea.com/wenku/16666.html...
Java整型溢出:越界运算后结果如何
Java整形溢出详细说明:越界操作后的结果和类型在Java程序中,理解数据类型的值范围非常重要。本文将深入探讨越界操作后int类型的行为,并解释int类型的值范围和越界操作结果。Javaint类型的值范围为-2、147、483、648至2、147、483、647。当计算结果超出此…...
PHPBrew终极性能优化指南:10个技巧加速PHP编译安装
PHPBrew终极性能优化指南:10个技巧加速PHP编译安装 【免费下载链接】phpbrew Brew & manage PHP versions in pure PHP at HOME 项目地址: https://gitcode.com/gh_mirrors/ph/phpbrew PHPBrew是一款纯PHP编写的PHP版本管理工具,能够帮助开发…...
