首页 > 其他分享 >RuoYi-Vue开源项目2-前端登录验证码生成过程分析

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

时间:2024-03-17 17:30:31浏览次数:22  
标签:Vue 请求 res 前端 RuoYi 验证码 getCodeImg 页面

前端登录验证码实现过程

在这里插入图片描述

生成过程分析

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

  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.获取验证码API
	export 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替换成后端可识别的URL
	proxy: {
      // 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可以直接展示

标签:Vue,请求,res,前端,RuoYi,验证码,getCodeImg,页面
From: https://blog.csdn.net/qq_40765784/article/details/136716176

相关文章

  • Vue项目简介
    Vue项目的创建: 1)在桌面上创建一个Vue文件夹,打开后在搜索栏中 输入cmd,打开命令窗,输入vueui 调出图形化界面。2)创建一个项目3)点击手动 4)将路由打开router5)vue版本选择为2X,语法检测选择第一项。6)创建好项目之后,直接用vscode打开vue文件夹,以下为所创建的......
  • 基于SpringBoot+Vue实现的二手交易系统
    系统介绍校园二手交易网站是一种专门针对有二手物品交易需求用户的二手交易的网站。它的设计和开发主要是为了满足用户之间的二手物品交易需求,方便大家在线买卖二手物品。近年来,随着互联网技术的发展,人们越来越喜欢在线购物,二手交易也不例外。功能模块图技术选型开发工......
  • Vue3 组件通信方式小结
    也是零零散散用vue3来搞一些前端的页面,每次在组件通信,主要是传数据这块总是忘记,大多无非父传子,子传父等情况,这里再来做一个小结.父传子Props最常见的就是父组件给子组件传递数据,不论是传字符串也好,还是数组,对象,函数等,都可以通过属性传值的方式,子组件......
  • Java毕业设计-200套基于Springboot+vue的毕设项目实战(源码+论文+演示视频)
    大家好!我是岛上程序猿,感谢您阅读本文,欢迎一键三连哦。......
  • Vue3学习日记 Day1
    一、简介1、简介  Vue3是新的默认版本,拥有更快的速度,更好的语法二、使用create-vue搭建Vue3项目1、创建项目1、介绍  create-vue是Vue官方新的脚手架工具,底层切换为了vite,为开发提供极速响应2、使用  2.1、确定环境条件    2.1.1已安装16.0或......
  • 微信小程序uniapp+vue+nodejs宝宝成长记录系统的设计与实现
    本文先通过对相关系统的调研,提出开发基于微信小程序的宝宝成长记录系统的意义,然后使用当前主流的技术进行开发,满足基于微信小程序的宝宝成长记录系统的技术要求,分析系统需要实现的功能并进行设计。梳理业务流程,并根据功能设计数据库,最后通过编码实现,介绍实现的关键算法逻辑。在......
  • pikachu靶场第三关-密码爆破之验证码绕过(on client)(附代码审计)
    源代码如下:if(isset($_POST['submit'])){if($_POST['username']&&$_POST['password']){$username=$_POST['username'];$password=$_POST['password'];$sql="select*......
  • vue生命周期
    1.computed是在HTMLDOM加载后马上执行的,如赋值;2.methods则必须要有一定的触发条件才能执行,如点击事件;3.watch呢?它用于观察Vue实例上的数据变动。对应一个对象,键是观察表达式,值是对应回调。值也可以是方法名,或者是对象,包含选项。所以他们的执行顺序为:默认加载的时候先comput......
  • vue生命周期
     什么是生命周期:从Vue实例创建,运行,到销毁期间,总是伴随着各种各样的事件,这些事件,统称为生命周期!生命周期钩子=生命周期函数=生命周期事件主要的生命周期函数分类:创建期间的生命周期函数:beforeCreate:实例刚在内存中被创建出来,此时,还没有初始化好data和methods属性......
  • Vue+SpringBoot打造教学过程管理系统
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1教师端2.2学生端2.3微信小程序端2.3.1教师功能如下2.3.2学生功能如下三、系统展示四、核心代码4.1查询签到4.2签到4.3查询任务4.4查询课程4.5生成课程成绩六、免责说明一、摘要1.1项目介绍基......