后台生成验证码的方法,验证码相关

1、后台生成验证码的方法

/**** [验证码生成] [验证码生成]base64*/@RequestMapping(value = "/getverifycode", method = RequestMethod.POST)public String getVerifyCode(@RequestBody String param) {try {Integer codeLength = Integer.parseInt("4");Integer imgWidth = Integer.parseInt("160");Integer imgHeight = Integer.parseInt("46");String verifyCode = VerifyCodeUtils.generateVerifyCode(codeLength);ByteArrayOutputStream os = new ByteArrayOutputStream();VerifyCodeUtils.outputImage(imgWidth, imgHeight, os, verifyCode);Record r = new Record();r.set("verifycode", verifyCode);byte[] encodeBase64 = Base64.getEncoder().encode(os.toByteArray());r.set("verifyimg", new String(encodeBase64));return CnsJsonUtil.makeStandardReturn("1", "获取验证码成功!", com.epoint.core.utils.json.JsonUtil.objectToJson(r));}catch (Exception e) {e.printStackTrace();return CnsJsonUtil.makeStandardReturn("0", "获取验证码失败!", e.getMessage());}}

2、前端获取验证码图片的逻辑

// 20220506 确定当前验证码的唯一codevar codeUUID = Util.uuid();var param = {token: "",codeUUID: codeUUID}$.ajax({url: "../../rest/cnsuserToken/getverifycode",type: 'POST',dataType: 'json',async: false,contentType: "application/json",data: JSON.stringify(param),success: function (data) {$("#validateimg").attr("src", "data:image/png;base64," + data.custom.verifyimg);},error: function (e) {console.log("请求验证码出错:" + e);}});

3、后台验证码校验

/*** [验证码验证] session验证*/@RequestMapping(value = "/verifycode", method = RequestMethod.POST)public String verifyCode(@RequestBody String param, HttpServletRequest request) {String message = "验证码不正确";RedisCacheUtil redisCacheUtil = null;try {if (StringUtil.isNotBlank(param)) {JSONObject jsonObject = JSON.parseObject(param);String userverifycode = jsonObject.getString("verifycode");String codeUUID = jsonObject.getString("codeUUID");if (StringUtil.isNotBlank(codeUUID)) {// 20220506 集群不通过session获取验证码,从redis获取验证码redisCacheUtil = new RedisCacheUtil(false);String verCodeSystemLogin = redisCacheUtil.getByString(codeUUID);if (StringUtil.isNotBlank(verCodeSystemLogin)) {if (verCodeSystemLogin.equalsIgnoreCase(userverifycode)) {// 验证结束后删除redis中的验证码redisCacheUtil.del(codeUUID);return CnsJsonUtil.makeStandardReturn("1", "验证码验证成功!", "");}else {message = "验证码输入错误,请重新验证";}}else {message = "验证码已过期,请点击图片更换";}}}}catch (Exception e) {e.printStackTrace();}finally {if (redisCacheUtil != null) {redisCacheUtil.close();}}return CnsJsonUtil.makeStandardReturn("0", message, "");}

4、前台校验验证码接口

<li class="verification"><input id="codetext" type="text" placeholder="请输入验证码" /><div class="validate-img"><img src="" id="validateimg" onclick="changeCode()" /></div></li>var codeText = $.trim($("#codetext").val());if (!codeText) {epoint.alert('验证码不能为空!');return false;}var param = {codeUUID: codeUUID,verifycode: codeText.toLowerCase()};$.ajax({url: "../../rest/cnsuserToken/verifycode",type: 'POST',data: JSON.stringify(param),dataType: 'json',async: false,contentType: "application/json",success: function (data) {if (data && data.status.code == "1") {//避免中文登录名的问题,先进行utf-8编码userName = epoint.encodeUtf8(userName);//调用自定义编码userName = epoint.encode(userName);passWord = RSAUtils.encryptedString(key, passWord);epoint.execute('loginaction.login', '', [userName, passWord, loginType], checkMultipleLogin);return result;} else {epoint.alert(data.status.text);return false;}},error: function (error) {console.log(error);epoint.alert('验证码输入不正确!');return false;}});

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

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

相关文章

css图标 | 来自 fontawesome 字体文件的586 个小图标

1. css效果 /*!* Font Awesome 4.4.0 by davegandy - http://fontawesome.io - fontawesome* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)*/.fa-glass:before {content:"\f000"} .fa-music:before {content:"\f001"…

Nginx配置https链接跳转http

由于项目中实际用的http进行发布访问&#xff0c;网址链接没有指定为http类型&#xff0c;导致某些场景下打开链接是https方式进行访问&#xff0c;就会显示404错误&#xff0c;没法正常访问。 为了解决这种情况&#xff0c;需要进行Nginx配置&#xff0c;浏览器以https进行访…

小白如何理解MySQL?一文吃透

从本质上来说&#xff0c;MySQL也是一个软件&#xff0c;以Java为例&#xff0c;Java通过JDBC进行MySQL驱动连接后&#xff0c;通过调用“MySQL”的“接口”将SQL语句传给MySQL&#xff0c;并获取返回结果&#xff01; 连接器 第一步&#xff0c;你会先连接到这个数据库上&…

el-upload 上传视频并回显

el-upload上传视频&#xff0c;并且显示上传的视频 <el-form-item><label slot"label"><span style"color:#F56C6C">*</span> 视频</label><el-upload class"upload-demo" style"width:360px" :act…

项目管理:项目计划有哪些不可忽视的作用

为了确保项目在我们的预期范围内完成&#xff0c;编制计划是不可或缺的&#xff0c;它可以帮助项目管理团队进行提前思考、识别和管理任何疏漏和风险。 项目计划进行跟踪中有哪些不可忽视的作用&#xff1a; 1、了解成员的工作情况 分配任务后&#xff0c;项目经理应主动与…

蓝海卓越计费管理系统任意文件读取下载

看了大佬的文章&#xff0c;太牛逼啦&#xff0c;下面是大佬文章原文。 蓝海卓越计费管理系统任意文件读取下载 鹰图语法&#xff1a;web.title"蓝海卓越计费管理系统" 访问url 直接更改url就行了 /download.php?file../../../../../etc/passwd

nginx 配置多域名多站点 Ubuntu

nginx 配置多域名多站点 Ubuntu 一、安装 nginx apt install nginx二、配置文件说明 nginx 的配置文件在 /etc/nginx 目录下&#xff0c;它的默认内容是这样的 root2bd0:/etc/nginx# ll total 72 drwxr-xr-x 8 root root 4096 Jul 31 15:21 ./ drwxr-xr-x 104 root root …

需要暴雨天气安全“指南”的不仅仅是个人

昨日&#xff0c;人民日报官微发布#暴雨天气10个安全指南#&#xff0c;从居家防范、行车安全、户外出行、遇灾求救、次生灾害、防疫防病等方面给出了针对暴雨的安全建议。 以上10条指南是主要面向个人的建议&#xff0c;而在城市水利基础设施的运营和维护上&#xff0c;需要一些…

排序进行曲-v1.0

排序 排序是将一组数据按照一定的规则进行排列的过程。在计算机科学中&#xff0c;排序是一 种常见的算法问题&#xff0c;通常用于对数据进行整理、查找、统计等操作。概念解读 基本概念 排序算法&#xff1a;排序算法是实现数据排序的具体方法。常见的排序算法包括冒泡排序…

leetcode 860. 柠檬水找零

2023.8.1 简单的一个思路就是建一个大小为3的数组change &#xff0c;用于存储剩余的零钱&#xff0c;然后遍历账单&#xff0c;每次找零钱的时候判断一下是否有足够的零钱&#xff0c;不够的话直接返回false。 能坚持到结束遍历则返回true。 代码如下&#xff1a; class Solu…

【视觉SLAM入门】5.1. 特征提取和匹配--FAST,ORB(关键点描述子),2D-2D对极几何,本质矩阵,单应矩阵,三角测量,三角化矛盾

"不言而善应" 0. 基础知识1. 特征提取和匹配1.1 FAST关键点1.2 ORB的关键点--改进FAST1.3 ORB的描述子--BRIEF1.4 总结 2. 对极几何&#xff0c;对极约束2.1 本质矩阵(对极约束)2.1.1 求解本质矩阵2.1.2 恢复相机运动 R &#xff0c; t R&#xff0c;t R&#xff0c;…

安全初级知识点详解

OOP 面向对象编程&#xff08;Object Oriented Programming &#xff0c;简称OOP&#xff09;是目前主流的编程范式。它将真实世界各种复杂的关系&#xff0c;抽象为一个个对象&#xff0c;然后由对象之间的分工与合作&#xff0c;完成对真实世界的模拟。 每一个对象都是功能中…

【React】搭建React项目

最近自己在尝试搭建react项目&#xff0c;其实react项目搭建没有想象中的那么复杂&#xff0c;我们只需要使用一个命令把React架子搭建好&#xff0c;其他的依赖可以根据具体的需求去安装&#xff0c;比如AntDesignMobile的UI框架&#xff0c;执行npm install antd-mobile --sa…

无涯教程-Lua - 变量声明

变量的名称可以由字母&#xff0c;数字和下划线字符组成。它必须以字母或下划线开头&#xff0c;由于Lua区分大小写&#xff0c;因此大写和小写字母是不同的。 在Lua中&#xff0c;尽管无涯教程没有变量数据类型&#xff0c;但是根据变量的范围有三种类型。 全局变量(Global) …

[Linux]详解环境基础开发工具的使用

[Linux]环境基础开发工具的使用 文章目录 [Linux]环境基础开发工具的使用0. 前言1. Linux 软件包管理器 yumyum介绍yum的使用yum源 2. Linux编辑器-vimvim介绍vim基本模式底行模式下的命令汇总命令模式下的命令汇总vim简单配置 3. Linux编译器gcc/g4. Linux项目自动化构建工具-…

IO进程线程第四天(8.1)opendir,closedir,readdir

作业1&#xff1a; 从终端获取一个文件的路径以及名字。 若该文件是目录文件&#xff0c;则将该文件下的所有文件的属性显示到终端&#xff0c;类似ls -l该文件夹 若该文件不是目录文件&#xff0c;则显示该文件的属性到终端上&#xff0c;类似ls -l这单个文件 #include<…

Linux|ubuntu下运行python

参考&#xff1a;ubuntu系统下切换python版本的方法 文章目录 python版本问题查看ubuntu下的所有python版本通过apt-get install可以安装不同版本python查看python版本号更新update-alternatives替代列表查看update-alternatives下的python版本切换python版本删除python版本 p…

工作记录------单元测试(持续更新)

工作记录------单元测试 之前的工作中从来没有写过单元测试&#xff0c;新入职公司要求写单元测试&#xff0c; 个人觉得&#xff0c;作为程序员单元测试还是必须会写的 于此记录一下首次编写单元测试的过程。 首先引入单元测试相关的依赖 <dependency><groupId>…

分布式开源监控Zabbix实战

Zabbix作为一个分布式开源监控软件&#xff0c;在传统的监控领域有着先天的优势&#xff0c;具备灵活的数据采集、自定义的告警策略、丰富的图表展示以及高可用性和扩展性。本文简要介绍Zabbix的特性、整体架构和工作流程&#xff0c;以及安装部署的过程&#xff0c;并结合实战…

【爬虫逆向案例】某易云音乐(评论)js逆向—— params、encSecKey解密

声明&#xff1a;本文只作学习研究&#xff0c;禁止用于非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请告知删除&#xff0c;谢谢&#xff01; 【爬虫逆向案例】某易云音乐&#xff08;评论&#xff09;js逆向—— params、encSecKey解密 1、前言2、行动…