使用图片验证码进行登录验证

需求:后端系统登录时使用图片验证码验证登录

效果:

使用 4 位数字加字母组合验证码登录,相关代码为:

import cn.hutool.captcha.CaptchaUtil;
import cn.hutool.captcha.LineCaptcha;@RequestMapping("/getCode")
public ResultVO getCode(HttpServletRequest request, HttpServletResponse response) {String imageBase64 = "";Map<String, String> result = new HashMap<>();try {// 定义图片大小LineCaptcha captcha = CaptchaUtil.createLineCaptcha(200, 100, 4, 300);response.setContentType("image/jpeg");response.setHeader("Pragma", "No-cache");imageBase64 = "data:image/png;base64," + captcha.getImageBase64();String code = captcha.getCode();logger.info("生成的图片验正码:{}", code);String codeKey = UUID.randomUUID().toString();redisSupport.set(codeKey, captcha.getCode());result.put("code",imageBase64);result.put("codeKey", codeKey);} catch (Exception e) {logger.error("生成图片验正码异常", e);return new ResultVO<>(ResultVO.FAIL, "获取图片失败");}return new ResultVO<>(result, ResultVO.SUCCESS, "获取图片成功");
}

这部分代码实现的是生成图片验证码的功能,使用的是 hutool 的工具包,需要以 key-value 的形式将生成的图片和用户关联起来,所以我们将结果以 Map 的形式返回给前端。其中使用的 redisSupport 可根据实际情况进行替换,其实就是 Redis 的一个工具包,后续会单独贴出来。  Redis 工具包请参考文章:Redis 工具实用篇_jiaomubai的博客-CSDN博客

正式登录接口的代码如下:

@PostMapping("/login")
public void login(@RequestParam("username") String username, @RequestParam("password") String password, @RequestParam("code") String code, @RequestParam("codeKey") String codeKey, HttpServletResponse resp, HttpServletRequest request) {JSONObject result = new JSONObject();try {String redisCode = (String) redisSupport.get(codeKey);log.info("redisCode:{}",redisCode);if(StringUtils.isEmpty(code)  || StringUtils.isEmpty(redisCode) || !code.equals(redisCode)){result.put("error_description", "验证码错误");result.put("error", "invalid_grant");resp.setStatus(400);redisSupport.del(codeKey);return;}} catch (Exception e) {log.error("登录接口错误,错误信息:{}", e);} finally {try {resp.setContentType(ContentType.JSON.getValue());ServletOutputStream out = resp.getOutputStream();OutputStreamWriter ow = new OutputStreamWriter(out, "UTF-8");ow.write(result.toJSONString());ow.flush();ow.close();} catch (Exception e) {log.error("登录接口错误,错误信息:{}", e);}}
}

其中入参中 username 为登录的用户名,password 为登录密码,code 为用户输入的图片验证码的答案,codekey 为与 code 关联的 key,因为在获取验证码的接口中(/getCode)我们已经将 code 和 codekey 存储在了 Redis 中,所以此处可直接根据 codekey 去获取 Redis 中的与 codekey 对应的验证码,之后与用户输入的 code 进行比较即可。其中使用的 redisSupport 可根据实际情况进行替换,其实就是 Redis 的一个工具包,后续会单独贴出来。 Redis 工具包请参考文章:Redis 工具实用篇_jiaomubai的博客-CSDN博客

还有一种使用简单运算的登录验证方式在下一篇文章中说明~

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tp5.1使用验证码类时,验证码图片不显示

一、问题描述 ​在使用 tp5.1 框架中的 验证码类 的时候&#xff0c;准备工作都做好了&#xff0c;但是验证码图片却无法显示&#xff0c;浏览器缓存也清掉了&#xff0c;电脑也重启的&#xff0c;图片路径也没有问题&#xff0c;就是不显示验证码的图片。 1&#xff09;通过co…

登录界面+验证码

做一个登录界面验证码的界面 实现效果&#xff1a; 第一部分、 页面&#xff1a; <div class"container" ><h2 style"text-align:center">会员登录 </h2><br><form action"<%path %>/user/login" method"…

tp6框架使用think-captcha时验证码总是错误,调用captcha_check验证失败

tp6框架使用think-captcha时验证码总是错误&#xff0c;调用captcha_check验证失败 用session(‘captcha’)查看值是空的&#xff0c;遇到这种情况&#xff0c;解决如下&#xff1a; 1、打开app/middleware.php文件 2、将\think\middleware\SessionInit::class,注释去掉

【兄弟反目成仇系列】:我只是写了一个爆炸信息窗口脚本,好兄弟追了我几条街~

文章目录 ✨ 真的来咯~&#x1f4a5;爆炸信息窗口&#x1f4a1;设计思路&#x1f511;模块准备 ⚠️删除好友警告⚠️源代码 ❓这时你可能会问&#x1f440; 批量获取表情包 &#x1f6c0;结束语 专栏Python零基础入门篇&#x1f525;Python网络蜘蛛&#x1f525;Python数据分析…

微软报告:GPT-4可以算早期AGI/ 百图生科发布AI生成蛋白质平台/ Arm寻求上调芯片设计价格…今日更多新鲜事在此...

日报君 发自 凹非寺量子位 | 公众号 QbitAI 大家好&#xff0c;今天是3月24日星期五。这周依然是技术炸炸炸的一周。 更多新鲜事&#xff0c;咱们一起来看~ 微软发布长篇报告&#xff1a;GPT-4已经可以算早期AGI 微软最新发布的154页长篇实验报告称&#xff1a;GPT-4已经可以被…

自媒体文案伪原创文章生成器软件

如何编写文案&#xff0c;不管是我们的博客、自媒体还是企业网站&#xff0c;想要获得关注和收录需要我们具有高度原创、吸引用户点击和满足搜索引擎规则的文案。 我们现在有很多从事文案工作的职位&#xff0c;看似不起眼但是网上各种爆文和热门短视频背后都离不开我们文案的支…

013利用脑电信号自动检测和诊断癫痫发作的深度卷积神经网络-2017(800引用)

Deep convolutional neural network for the automated detection and diagnosis of seizure using EEG signals ABSTRACT 脑电图(EEG)是一种常用的辅助测试&#xff0c;有助于癫痫的诊断。EEG信号包含关于大脑电活动的信息。传统上&#xff0c;神经学家采用直接视觉检查来识…

运动想象脑电信号数据集及其预处理方法

脑电信号基础知识 在BCI应用中,获取脑信号的途径包括多种技术方式。其中,EEG是最适合脑机接口应用的技术,主要因为无创性、便携式和高时间分辨率是其的优势。EEG是记录头部表面不同位置之间电位差异的时间记录,它起源于分布在大脑皮层的数百万个神经元的同步电活动的总和。…

EEG- gan:用于脑电图(EEG)大脑信号的生成对抗网络2018

EEG-GAN: Generative adversarial networks for electroencephalograhic (EEG) brain signals Abstract 生成对抗网络(GANs)最近在涉及图像的生成应用中非常成功&#xff0c;并开始应用于时间序列数据。在这里&#xff0c;我们将EEG- gan描述为生成脑电图(EEG)大脑信号的框架…

【汇编】二、预备知识(一只 Assember 的成长史)

嗨~你好呀&#xff01; 我是一名初二学生&#xff0c;热爱计算机&#xff0c;码龄两年。最近开始学习汇编&#xff0c;希望通过 Blog 的形式记录下自己的学习过程&#xff0c;也和更多人分享。 这篇文章主要讲述学习汇编所需的基础知识。 话不多说~我们开始吧&#xff01; 目…

聊天记录误删了有办法找回吗?微信聊天记录误删怎么恢复

今天小编想要找回一篇发过给好友的重要文档&#xff0c;结果发现&#xff0c;该文档已被删除…这么重要的东西&#xff0c;都不记得什么时候删除了&#xff0c;头都大了&#xff0c;着急想找回文档的我&#xff0c;脑子里一直悬浮着&#xff1a;聊天记录误删了有办法找回吗&…

微信聊天记录删了如何找回

微信聊天记录删了如何找回&#xff1f;微信聊天记录删除&#xff0c;怎么恢复&#xff1f;这是最近被问最多的问题&#xff0c;今天就来跟大家讲讲怎么恢复微信聊天记录。&#xff08;任何数据恢复都不能百分百&#xff0c;所以大家最好的办法还是把比较重要的聊天记录备份一下…

转:你的领导激情在哪里?发现它并为之而奋斗

个人理解&#xff1a; 激情&#xff0c;自省&#xff0c;经历 学会接受别人 激情和使命感 让大家的眼睛瞄准最终的结果 你的领导激情在哪里&#xff1f;发现它并为之而奋斗 你的领导激情在哪里&#xff1f;发现它并为之而奋斗 一个人仅凭空想象是很难找到自己的激情的。要找…

加班到十点,领导警告你不够努力啊!我TMD。。。

又到了一周总结的时刻最近因为搬家&#xff0c;导致好两周没总结了&#xff0c;人要是懒惰下来&#xff0c;再起来真的好艰难啊。 加班到十点&#xff0c;被警告不够努力 事情是这样子的&#xff0c;同事跟我说&#xff0c;楼上的部门最近裁员&#xff0c;大概裁员20%&#xff…

领导给你安排任务,这三种话,越早说越好

这年头都讲究执行力&#xff0c; 领导请来管理大师给员工一通培训&#xff0c; 执行力是上去了。 领导布置工作&#xff0c;员工都嗷嗷的上去干。 可是事情都干差了、干坏了、干偏了&#xff0c; 这算是执行力好吗&#xff1f;一点不算。 错误的方向&#xff0c;加上牛逼…

跟领导汇报工作时,这句话建议你不要说

&#xff3b; 爱开发&#xff3d;陪伴你一起成长&#xff0c;一起进步 跟领导汇报工作时&#xff0c;这三个字&#xff0c;建议你不要说 文 | 洪生鹏 跟领导汇报工作时&#xff0c;要是有某项工作那里做得不好&#xff0c;被领导指出时&#xff0c;有的人喜欢用“我以为”来答复…

领导总是喜欢在快下班时开会,一开就是一两个小时,好烦啊

张工是一名程序员&#xff0c;在一家互联网公司上班&#xff0c;最近部门来了一位新领导&#xff0c;总喜欢在快下班的时候开会&#xff0c;而且一开就是一两个小时&#xff0c;有重要事开会还说得过去&#xff0c;可有的会议始终是太无聊了&#xff0c;张工始终想不明白为何新…

请别把加班说的那么“高大上”

请别把加班说得那么“高大上” 【本期观点】IT行业加班&#xff0c;到底有没有价值&#xff1f; 【导语】众所周知&#xff0c;说到 IT 行业&#xff0c;大家的第一印象都是「加班严重」 不得不说&#xff0c;加班确实是 IT 行业潜规则了&#xff0c;IT 行业也被冠以「月…

熬夜加班做出的报表被领导吐槽太丑?那是你没用这个

五一刚结束&#xff0c;一个在旅游运营部门上班的朋友向我诉苦&#xff0c;今年的旅游业虽然因为疫情增长有所放缓&#xff0c;但并不影响五一旅游黄金期结束后他要做报表&#xff0c;领导现在除了关注疫情和行业发展&#xff0c;就是在不断的精细化企业管理&#xff0c;像以前…

升职加薪,领导看的从来都不是谁更“努力”

许多程序员都认为&#xff0c;只要我足够努力&#xff0c;在职场中就一定能升职加薪。 但现实却是&#xff1a; 你为了项目进度经常加班到深夜&#xff0c;领导却对你视而不见&#xff1b;开会的时候&#xff0c;明明你的想法更有可行性但总是不被看好&#xff1b;无论什么工作…