前端怎么做一个验证码和JWT,使用mockjs模拟后端

流程图

创建一个发起请求

创建一个方法

复制代码
    getCaptchaImg() {
      this.$axios.get('/captcha').then(res => {
        console.log(res);
        this.loginForm.token = res.data.data.token
        this.captchaImg = res.data.data.captchaImg
        console.log(this.captchaImg)
      })
    },

    captchaImg: "",

创建一个参数

先使页面刷星调用这个方法

复制代码
  created() {
    this.getCaptchaImg();

  },

要导入的图片,我这里加宽和高是因为,我的显示不出来,也不知道什么原因,望大佬指教

复制代码
          <el-input v-model="loginForm.code">
            <el-image slot="append" v-if="captchaImg" :src="captchaImg" style="width: 70px;height: 30px"
                      class="captchaImg"></el-image>
          </el-input>

使用mockjs

在main.js中加入

创建一个mock.js的文件

就可以模拟后端接口

复制代码
const Mock = require('mockjs')

const Random = Mock.Random
返回的结果
let Result = {
    code: 200,
    msg: '操作成功',
    data: null
};
这里和前端对应
Mock.mock('/captcha', 'get', () => {
    Result.data = {
        token: Random.string(32),
        这些方法可以在mockjs的官网上面去查询
        captchaImg: Random.dataImage('100x40', 'p7n5w'),
    }
    return Result;
});
Mock.mock('/login', 'post', () => {
    //无法往header中传入数据
    return Result;
});

结果

有点丑,见谅

现在我们要让所有页面都能有JWT

我们就要在store/index.js中进行一个传值

复制代码
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
设置一个变量token
    token: '',
  },
  getters: {
  },
  mutations: {
设置一个方法,将token存入localStorage
      SET_TOKEN: (state, token) => {
          state.token = token
          localStorage.setItem("token", token)
      },

  },
  actions: {
  },
  modules: {
  }
})

写一个发请求的方法

复制代码
    submitForm(loginForm) {
      this.$refs[loginForm].validate((valid) => {
        if (valid) {
          this.$axios.post('/login', this.loginForm).then(res => {
            const jwt = res.headers['authorization']
            // 把jwt放到请求头中
            this.$store.commit('SET_TOKEN', jwt)
            //页面的跳转
            this.$router.push('/index')

          });
        } else {
          console.log('error submit!!');
          return false;
        }
      });
    },

mockjs中写接口

复制代码
Mock.mock('/login', 'post', () => {
    //无法往header中传入数据
    return Result;
});
相关推荐
lichenyang4537 分钟前
组件设计模式与通信
前端·javascript·设计模式
im_AMBER23 分钟前
前端性能优化之首屏提速
前端·学习·性能优化
天天向上102438 分钟前
vue 大屏适配的一种实现思路
前端·javascript·vue.js
SuperEugene39 分钟前
Vue/Vite 多环境配置实战:dev、test、prod 差异区分与避坑指南|Vue 工程化篇
前端·javascript·vue.js
结网的兔子1 小时前
前端学习笔记(实战准备篇)——用vite构建一个项目【吐血整理】
前端·学习·elementui·npm·node.js·vue
kyriewen1 小时前
盒模型:CSS 世界的物理法则,margin 塌陷与 padding 的恩怨情仇
前端·css·html
lichenyang4531 小时前
React 性能优化组件设计模式与通信
前端·javascript·设计模式
小成C1 小时前
别再把 Claude Code 用乱了:CLAUDE.md、Rules、Skills、Hooks 到底怎么分工?
前端·人工智能·面试
巫山老妖1 小时前
OpenClaw 技术教程大全:从安装到多 Agent 协作,全在这里
java·前端
weixin_446260851 小时前
提升开发效率的神器!快速选择编码上下文 — React Grab
前端·react.js·前端框架