关于验证码生成的接口实例
一.Result工具类封装一个统一返回结果对象后面controller里可以直接返回“成功”或“失败”的数据。public class Result extends HashMapString,Object { public static Result ok(){ Result result new Result(); result.put(code, 200); result.put(msg, 操作成功); return result; } public static Result error(String msg){ Result result new Result(); result.put(code, 500); result.put(msg, msg); return result; } Override public Result put(String key, Object value) { super.put(key, value); return this; } }二.接口代码Controller public class LoginController { Autowired private StringRedisTemplate stringRedisTemplate; GetMapping(/captcha) ResponseBody public Result getCaptcha() { //1.借助第三方工具类(Hutool)生成验证码的图片 //用 Hutool 创建验证码对象。前两个参数是图片宽高第三个是验证码字符数第四个是干扰线数量。 LineCaptcha lineCaptcha CaptchaUtil.createLineCaptcha(120, 40, 4, 20); //2.拿到图片中验证码的值 String code lineCaptcha.getCode(); // 3.生成uuid作为这次验证码的唯一标识 //给当前这张验证码生成一个唯一编号。前端登录时会把用户输入的验证码和这个 uuid 一起传回来后端再去 Redis 里查对应验证码。 String uuid UUID.randomUUID().toString().replace(-, ); // 4. 把验证码存到 redis String redisKey captcha: uuid; //设置验证码过期时间 stringRedisTemplate.opsForValue().set(redisKey, code, 5, TimeUnit.MINUTES); // 5. 获取 base64 图片字符串 //把图片转成前端可直接显示的base64形式前端直接放到 img 的 src 里就能显示。 String imageBase64 data:image/png;base64, lineCaptcha.getImageBase64(); // 6. 返回给前端 //这行代码先执行new Result,得到内层对象,记作dataResult:{ uuid: uuid, captcha: imageBase64,code: code} //再执行code: code得到外层对象,记作Result:{code: 200,msg: 操作成功} //最后执行result.put(data, dataResult),于是变成{code: 200,msg: 操作成功, data: {uuid: uuid,captcha: imageBase64, code: code}} return Result.ok()//对应工具类里的public static Result ok(){........} .put(data, new Result().put(uuid, uuid).put(captcha, imageBase64).put(code, code));//先new一个Result对象然后往里面放三个键值对uuid,captcha,code } }二.在redis中验证1.选择验证码存入的redis库select 12.查keykeys captcha:*结果为captcha:a0dab01b80974615b0a4c9f801f55d863.通过 key 查值get captcha:a0dab01b80974615b0a4c9f801f55d86结果就是生成的验证码4.查看过期时间ttl captcha:a0dab01b80974615b0a4c9f801f55d86结果是一个大于零的整数这就是过期时间

相关新闻

【双目相机标定】张-标定法(棋盘格标定法)

【双目相机标定】张-标定法(棋盘格标定法)

引入具体的标定算法之前,先简单介绍成像系统的四个坐标系,分别为: 世界坐标系:指的就是物体在真实世界中的坐标位置,用于描述相机拍摄场景的位置和姿态;相机坐标系:是在相机系统中以相机的光学中…

2026/7/3 9:02:23 阅读更多 →
率零降AI率工具评测:3.2元/千字的性价比之王

率零降AI率工具评测:3.2元/千字的性价比之王

率零降AI率工具评测:3.2元/千字的性价比之王 在降AI率工具这个赛道上,价格一直是同学们最关心的话题之一。毕竟对于大多数学生来说,毕业季本来就是花钱的高峰期——打印费、答辩材料费、查重费、拍照费……如果降AI率再花一大笔钱&#xff0c…

2026/5/17 10:20:41 阅读更多 →
告别监控盲区!KeyarchOS安装nrpe-3.2.1-8,远程主机指标采集开箱即用 | 浪潮信息KOS

告别监控盲区!KeyarchOS安装nrpe-3.2.1-8,远程主机指标采集开箱即用 | 浪潮信息KOS

1 概述32 安装环境32.1 操作系统环境32.2工具版本43 安装与测试43.1 root权限下安装nrpe-3.2.1-843.2测试7 1 概述 浪潮信息KOS是浪潮信息基于Linux Kernel、OpenAnolis等开源技术自主研发的一款服务器操作系统,支持x86、ARM等主流架构处理器,性能和稳定…

2026/7/3 6:23:28 阅读更多 →

最新新闻

Web API开发指南:从基础概念到RESTful实践

Web API开发指南:从基础概念到RESTful实践

1. Web开发与API基础概念 在现代Web开发中,API(应用程序编程接口)已经成为连接前后端、整合第三方服务的关键技术。简单来说,API就像餐厅的服务员 - 你不需要知道厨房如何准备食物,只需通过标准化的菜单(AP…

2026/7/4 19:11:28 阅读更多 →
技术文章SEO与分享优化实战指南

技术文章SEO与分享优化实战指南

1. 内容创作与SEO的残酷现实刚入行那会儿,我花两周写完一篇自认为干货十足的技术文章,发布后每天刷新后台数据,结果阅读量始终停留在个位数。直到某天同事随口问:"你文章的关键词布局了吗?分享卡片优化过没&#…

2026/7/4 19:11:28 阅读更多 →
UE5 C++ 射线检测多物体:LineTraceMultiByObjectType详解

UE5 C++ 射线检测多物体:LineTraceMultiByObjectType详解

1. UE5 C 射线检测多物体的按通道与按对象类型 LineTraceMultiByObjectType 详解在虚幻引擎5(UE5)开发中,射线检测(Line Trace)是最常用的物理检测手段之一。今天我要分享的是如何通过C实现多物体射线检测,…

2026/7/4 19:09:28 阅读更多 →
Unity编辑器工具:高效处理3D模型的实用技巧

Unity编辑器工具:高效处理3D模型的实用技巧

1. Unity编辑器工具概述:模型处理的核心利器在Unity开发流程中,Editor工具链是提升工作效率的关键组件。针对3D模型处理这一高频需求,Unity提供了一系列原生和可扩展的编辑器功能,能够覆盖从资源导入到场景配置的全流程。不同于常…

2026/7/4 19:05:27 阅读更多 →
Mirror网络库插件优化与实战应用指南

Mirror网络库插件优化与实战应用指南

1. Mirror网络库插件深度解析Mirror作为Unity环境下广受欢迎的高性能网络库,其插件系统在实际项目开发中扮演着关键角色。这次我们将深入探讨第6代插件的核心特性与实战应用技巧,这些经验来自三个不同规模项目的实际验证。1.1 插件架构设计理念Mirror插件…

2026/7/4 19:05:27 阅读更多 →
数据中台架构设计与治理实战指南

数据中台架构设计与治理实战指南

1. 数据中台生态系统的核心价值三年前我接手某零售集团数据治理项目时,第一次深刻体会到数据孤岛的破坏力——市场部用T3的销售数据做促销决策,而仓储系统显示的是实时库存,这种数据割裂直接导致了一次千万级的营销事故。这正是数据中台要解决…

2026/7/4 19:03:27 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻