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

RuoYi-Vue开源项目2-前端登录验证码生成过程分析

前端登录验证码实现过程

  • 生成过程分析

在这里插入图片描述

生成过程分析

验证码的生成过程简单概括为:前端登录页面加载时,向后端发送一个请求,返回验证码图片给前端页面展示

  1. 前端页面加载触发代码:
	import { getCodeImg } from "@/api/login";created() {this.getCode();this.getCookie();},// 1.页面初始化页面调用的验证码加载函数getCode() {getCodeImg().then(res => {this.captchaEnabled = res.captchaEnabled === undefined ? true : res.captchaEnabled;if (this.captchaEnabled) {this.codeUrl = "data:image/gif;base64," + res.img;this.loginForm.uuid = res.uuid;}});},// 2.获取验证码APIexport function getCodeImg() {return request({url: '/captchaImage',headers: {isToken: false},method: 'get',timeout: 20000})}// 3.axios请求const service = axios.create({// axios中请求配置有baseURL选项,表示请求URL公共部分baseURL: process.env.VUE_APP_BASE_API,// 超时timeout: 10000})// 4.解决跨域问题,将前端的URL替换成后端可识别的URLproxy: {// detail: https://cli.vuejs.org/config/#devserver-proxy[process.env.VUE_APP_BASE_API]: {target: `http://localhost:8080`,changeOrigin: true,pathRewrite: {['^' + process.env.VUE_APP_BASE_API]: ''}}},
}

细节说明:

  • created钩子下执行的代码时机是在页面刚刚加载后执行的,因此主要调用了getCodeImg()方法
  • @/可以理解为src/
  • getCodeImg()使用axios向后端发送请求
  • 前端vue.config.js文件中proxy解决请求跨域问题
  1. 后端请求代码分析
    快速查询请求小妙招:
    在这里插入图片描述
    在这里插入图片描述
    后端核心逻辑
  • 判断验证码校验是否开启
  • 生成验证码,验证码的题目被转换成验证码图片,验证码答案存入Redis中,Key为固定验证码字符串头部+UUID
  • 验证码图片写入转换流中,Base64.encode("转换流.toByteArray()")存入Ajax,UUID存入Ajax返回给前端
  • 前端接收为this.codeUrl = "data:image/gif;base64," + res.img;,使用codeUrl可以直接展示

相关文章:

RuoYi-Vue开源项目2-前端登录验证码生成过程分析

前端登录验证码实现过程 生成过程分析 生成过程分析 验证码的生成过程简单概括为:前端登录页面加载时,向后端发送一个请求,返回验证码图片给前端页面展示 前端页面加载触发代码: import { getCodeImg } from "/api/login&q…...

error: C preprocessor fails sanity check

问题 ./configure --prefix/opt/mips_lib/libev --hostmipsel-openwrt-linux CCmipsel-openwrt-linux-gcc运行后提示 checking how to run the C preprocessor... mipsel-openwrt-linux-gcc --sysroot/opt/mt7628/toolchain-mipsel_24kc_gcc-8.4.0_musl -I/opt/mt7628/toolch…...

Kubernetes实战(三十一)-安装containerd

1 资源 containerd项目官方地址 GitHub - containerd/containerd: An open and reliable container runtime containerd的发布版本地址: Releases containerd/containerd GitHub 2 安装containerd 2.1 解压安装 2.1.1 下载压缩包 curl -LO https://github…...

使用docker搭建faiss向量数据库

为了不污染服务器环境,保证程序运行时有更好的隔离性,领导要求基于容器运行程序。 一、准备工作 1、创建文件夹faiss 该文件夹有用于存放faiss相关的文件及脚本 mkdir ~/faiss 2、创建data文件夹 cd ~/faiss mkdir data 这个文件夹用于volume&#xf…...

安卓面试题多线程 121-125

121. 简述当一个线程进入某个对象的一个 synchronized 的实例方 法后,其它线程是否可进入此对象的其它方法 ?如果其他方法没有 synchronized 的话,其他线程是可以进入的。 所以要开放一个线程安全的对象时,得保证每个方法都是线程安全的122. 简述乐观锁和悲观锁的理解及如何…...

什么是 HTTPS?它是如何解决安全性问题的?

什么是 HTTPS? HTTPS(HyperText Transfer Protocol Secure)是一种安全的通信协议,用于在计算机网络上安全地传输超文本(如网页、图像、视频等)和其他数据。它是 HTTP 协议的安全版本,通过使用加…...

C++入门(下)

文章目录 1:引用1.1:引用概念1.2:引用的特性.1.2.1:引用在定义时必须初始化1.2.2:一个变量可以有多个引用1.2.3:引用一旦引用一个实体,再不能引用其他实体. 1.3:应用场景1.3.1:做参数1.3.2:做返回值1.3.2.1:传值返回1.3.2.2:传引用返回(错误示范)1.3.2.3:传引用返回(正确示范) …...

2024-03-20 作业

作业要求: 1> 创建一个工人信息库,包含工号(主键)、姓名、年龄、薪资。 2> 添加三条工人信息(可以完整信息,也可以非完整信息) 3> 修改某一个工人的薪资(确定的一个&#x…...

【机器学习】深入解析线性回归模型

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:机器学习 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 【机器学习】深入解析线性回归模型 引入一 初步了解1.1 概念1.2 类比二 基本要素2.1 数据2.2 模型…...

新一代云原生数据库OLAP

2023 OLAP峰会(公开)PPT汇总(25份).zip 新一代云原生数据库的OLAP(联机分析处理)能力是其重要的特性之一,这种能力使得数据库能够支持复杂的数据分析查询,从而满足企业对大数据的深…...

JavaEE--小Demo

目录 下载包 配置 修改文件 pom.xml application.properties 创建文件 HelloApi.java GreetingController.java Greeting.java DemoApplication.java 运行包 运行命令 mvn package cd target dir java -jar demo-0.0.1-SNAPSHOT.jar 浏览器测试结果 下载包 …...

一代大神跌落神坛——Java炸了!

曾经它是只手遮天的一大计算机语言.......可现如今,腹背受敌、大势已去,一代神话跌落神坛! Java薪水20k降至15k难掩颓势,事业编3k升至3500尽显嫡道风范!嫡嫡道道、嫡嫡道道~ 没错,就是它!Java…...

面试算法-64-零钱兑换

题目 给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。 你可以认为每种硬币的数量是无限的…...

Java复习06 Spring 代码概念

Java复习06 Spring 代码概念 1.基本代码 Component public class CommunityApplicationTests implements ApplicationContextAware {private ApplicationContext applicationContext;Overridepublic void setApplicationContext(ApplicationContext applicationContext) thr…...

【研究僧总结】回顾第1095个创作日

目录 前言一. 机缘二. 日常三. 展望 前言 感觉刚过1024不久,现在又来个1095创作日 一. 机缘 研究僧一直在找平台做笔记,方便之后的回顾总结,也让各位网友见证你我的成长,相互学习 止不住的写文止不住的成长,大家共同…...

QT(6.5) cmake构建C++编程,调用python

一、注意事项 explicit c中,一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数),承担了两个角色,构造器、类型转换操作符, c提供关键字explicit,阻止转换构造函数进行的隐式转换的发生&#…...

Java开发从入门到精通(九):Java的面向对象OOP:成员变量、成员方法、类变量、类方法、代码块、单例设计模式

Java大数据开发和安全开发 (一)Java的变量和方法1.1 成员变量1.2 成员方法1.3 static关键字1.3.1 static修饰成员变量1.3.1 static修饰成员变量的应用场景1.3.1 static修饰成员方法1.3.1 static修饰成员方法的应用场景1.3.1 static的注意事项1.3.1 static的应用知识…...

通过 Socket 手动实现 HTTP 协议

你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...

探索数据结构:双向链表的灵活优势

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:数据结构与算法 贝蒂的主页:Betty’s blog 1. 前言 前面我们学习了单链表,它解决了顺序表中插入删除需…...

记录一次服务器内存使用率过高达到90%告警问题排查。

目录 一、前言二、问题排查处理三、 结尾 👩🏽‍💻个人主页:阿木木AEcru 🔥 系列专栏:Docker容器化部署系列 💹每一次技术突破,都是对自我能力的挑战和超越。 一、前言 一大早就有一…...

如何免费获取VMware Workstation Pro 17许可证密钥:5个简单步骤快速激活虚拟化环境

如何免费获取VMware Workstation Pro 17许可证密钥:5个简单步骤快速激活虚拟化环境 【免费下载链接】VMware-Workstation-Pro-17-Licence-Keys Free VMware Workstation Pro 17 full license keys. Weve meticulously organized thousands of keys, catering to all…...

别再用LiveCD了!用Ventoy制作Ubuntu急救盘一键扩容根目录(支持22.04/20.04)

Ventoy革命:告别传统LiveCD,打造智能Ubuntu急救与扩容解决方案 在Linux系统维护领域,传统LiveCD方式已经服务我们近二十年,但它的局限性日益明显——每个ISO需要独占一个U盘,版本更新导致工具集不兼容,操作…...

别再到处找免费股票数据了!实测可用:Python/JS/Java调用StockAPI获取K线、Level2实时行情保姆级教程

实战指南:用StockAPI高效获取股票数据的多语言解决方案 在金融科技和量化交易领域,获取准确、实时的股票数据是每个开发者面临的第一个挑战。市面上充斥着各种号称"免费"的数据源,但真正稳定可用的却寥寥无几。StockAPI.com.cn作为…...

Oracle高效批量插入数据的四大实战方案解析

1. INSERT INTO SELECT:跨表搬运工的高效玩法 第一次接触Oracle批量插入时,我像发现新大陆一样兴奋——原来不需要写几百条INSERT语句也能搞定海量数据。INSERT INTO SELECT就是我的启蒙老师,它的工作原理就像搬家公司的集装箱卡车&#xff…...

为什么你的手势识别准确率卡在82.3%?2026奇点大会公布大模型训练数据盲区的3个致命偏差

第一章&#xff1a;2026奇点大会手势识别准确率瓶颈的全局洞察 2026奇点智能技术大会(https://ml-summit.org) 当前&#xff0c;2026奇点大会所部署的实时手势识别系统在多光照、低延迟&#xff08;<35ms端到端&#xff09;约束下&#xff0c;整体准确率稳定在92.7%0.4%&am…...

【电子通识】为什么PCB能短接还要用0Ω电阻?0欧电阻怎么做降额?

简介 市面上有一种电阻叫0Ω电阻&#xff0c;又称跨接电阻&#xff0c;是一种标称阻值为0的特殊电阻。有没有想过&#xff0c;用PCB直接就可以实现短接变成0Ω的功能&#xff0c;那为什么还需要焊接一个0Ω电阻呢&#xff1f; 0Ω电阻是一种特殊用途的电阻&#xff0c;与常规贴…...

数据库运维工具

数据库运维工具&#xff1a;高效管理的智能助手 在数据驱动的时代&#xff0c;数据库作为企业核心信息的存储载体&#xff0c;其稳定性与性能直接影响业务运行。随着数据量激增和架构复杂化&#xff0c;传统人工运维已难以满足需求。数据库运维工具应运而生&#xff0c;通过自…...

智慧树自动刷课插件:3步实现无人值守学习

智慧树自动刷课插件&#xff1a;3步实现无人值守学习 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台的网课进度烦恼吗&#xff1f;智慧树自动刷课插件…...

CLIP-GmP-ViT-L-14辅助学术研究:LaTeX论文图表自动标注与索引

CLIP-GmP-ViT-L-14辅助学术研究&#xff1a;LaTeX论文图表自动标注与索引 1. 引言 写论文最头疼的事情之一是什么&#xff1f;对我而言&#xff0c;绝对是处理图表。辛辛苦苦画好一张图&#xff0c;或者整理好一个表格&#xff0c;接下来就得绞尽脑汁想一个既准确又简洁的标题…...

[实战] STM32H743 SAI双缓冲DMA实现零延迟音频流处理

1. 为什么需要零延迟音频流处理&#xff1f; 在嵌入式音频开发中&#xff0c;实时性往往是决定系统成败的关键因素。想象一下&#xff0c;当你对着智能音箱说"播放音乐"时&#xff0c;如果系统需要等待几百毫秒才有反应&#xff0c;这种体验会让人抓狂。同样在专业音…...