登录模块的实现

发布时间:2024年01月11日

一.前期的准备工作

1.页面的布局

? (1)表单的校验:

? ? ? ? ? ? 利用element-ui提供的文档绑定rules规则后实现校验

? (2)跨域的配置 :

? ? ? ? ? 利用proxy代理来解决跨域的问题

? (3)axios拦截器的配置

? 两个点:1. 在请求拦截的成功回调中,如果token,因为调用其它的接口需要token才能调取。

? ? ? ? ? ? ? ? ? 在请求头中加入token。

? ? ? ? ? ? ? 2.在响应拦截器中进行数据的一层解析: return res .data

? ? ? ? ? ? ? ? ? 进行统一错误的处理,返回的状态码是200,但是success的值是false,代表业务的失败。

?(4)环境变量的配置

在根路径准备好生成环境和开发环境的基地址。

baseUrl:process.env获取

(5)在vuex中存储token


按需导入使用第三方库的方法 
import {gettoken,settoken,removetoken} from '第三方库的路径'

satae:

token:gettoken()

mutation

定义方法来获取token



action
定义接口来获取token

(6)定义api接口的封装文件

默认导入
import request from '拦截器文件'
定义方法:
export login(){
  url:'/api地址'
  method:请求的方法
}

(7)点击登录按钮

导入方法
import {login } form '文件的路径'

在表单验证通过后:
调用接口 login().then(res=>{ 
通过 this.$store.dispatch('vuex action方法的模块名字' ,返回回来的token作为实参传递过(res))
})

这样就获取到了token。

(8)登录后跳转首页的问题

在点击登录按钮之后,会出现

在这个步骤中,通过this.$store.dispatch来出发模块并且调用接口,很显然这个步骤是一个异步的,

如果采用.then的方法,他是一个回调函数

使用then方法,他还是立马执行:
this.$store.push('/')

很明显这是不符合逻辑的,假设我们的业务逻辑的:

action这个模块还没出发,就直接跳转到了首页。

如果解决这个问题?

利用async await即可解决:??????????

如果 await后面是一个Promise对象,则会等Promise对象返回后面的值在去执行它之后的代码。

如果返回的不是一个Promise,则指向的是代码完成的一个返回值。

文章来源:https://blog.csdn.net/qq_59076775/article/details/135514848
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。