登录前端笔记(二):vuex管理用户数据;跨域;axios封装;环境;请求响应拦截;权限;用户资料Vuex共享

news2024/10/18 18:48:38

一、Vuex登录流程之用户模块:

在这里插入图片描述

简言之:点击登录调用actions且得到token,把得到的token提交给mutations从而修改state里的数据。
原视频

(1)Vuex用户模块流程

组件页面里点击登录后,调用stores里的actions,actions里调用登录接口成功后返回一个token值,使用vuex实现一个token数据多处共享(token数据先在state里声明数据初始化;然后vuex修改state里数据通过mutations里去声明一个方法setToken修改token,然后actions里调用登录接口后是要返回一个token假设值为123,此时调用setToken方法context.commit(‘setToken【也就是mutations的名字】’, ‘123【也就是token值】’)
在这里插入图片描述

(2)Vuex持久化问题:

页面刷新后token值又变为null(数据未被存储)
解决:设置token时同步到缓存里,然后从缓存里读取token初始值。(Vuex:state里从缓存中读取token初始值,mutations里同步token到缓存里)
获取、设置、删除token方法(类似localStorage都可以前端缓存数据)
在这里插入图片描述
在这里插入图片描述

二、Vuex登录流程之调用登录接口

在这里插入图片描述

(1)跨域

简言之,直接发送请求时跨域行为,会受到同源策略影响就会报错。所以直接发送请求要么后端做cors,要么前端做代理。此处为代理。
①浏览器同源策略:协议+主机+端口都一样
在这里插入图片描述
通过node向目标服务器发送请求,而同源策略只针对浏览器对浏览器之间,而node是服务器。
在这里插入图片描述
②配置vue-cli代理解决跨域问题
在这里插入图片描述

proxy的path地址为"/api":意思是发送的请求里只要携带/api就会把请求转为目标服务器,对象为目标服务器所存储的内容。属性target为代理的目标服务器地址;改完文件重启项目。
在这里插入图片描述
http://localhost:9528是axios会自动给url拼接上;因为代理配置了target内容所以会给url拼接target内容。
在这里插入图片描述

(2)axios封装

在这里插入图片描述
(1)基地址、超时时间
baseURL:基地址,axios设置一个基地址/api,其余请求可以不用再拼接这个地址/api;
在这里插入图片描述

timeout:超时时间,如果服务器在超时时间内没有响应,直接认定此次请求失败;
在这里插入图片描述

(2)请求
在这里插入图片描述

1)请求拦截器:注入token
把所有token都放在请求拦截器里去统一管理,这样每个请求都不需要再次传入token;
登录之后所有请求经过请求拦截器后都会携带token;

在这里插入图片描述

①axios里取token:用户模块部分,在stores里下的user即用户模块里管理token且持久化了token;所以可通过state.user.token获取token;
在这里插入图片描述
但stores里的getters可快速访问stores下modules里的app 与settings与 user里的属性;
在这里插入图片描述
所以直接getters.token,所以需要在axios里取到getters
在这里插入图片描述
不可以this.$stores.getters,因为this只可以在组件里的时候使用,this指的是组件实例,组件实例上挂载了$stores属性,但此时this不是组件实例是axios实例;

store 下的 index 文件将store进行export default 即实例是组件的里的this.$stores ,不用this直接引用store也可以使用:store.getters.token
在这里插入图片描述
在这里插入图片描述
请求头
在这里插入图片描述
测试:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2)响应拦截器:是否成功
response有两个参数,一个成功一个失败;
①响应失败
失败的时候需要reject并且提示信息,return Promise.reject(err)终止错误;
error对象里提供了message属性即是错误信息,可以通过alert提示,但现在在使用elementUI ,它有一个message来提示信息;
在这里插入图片描述
不可以直接使用this.$message.warning,因为在组件里面this指的是组件实例,实例上挂载了$message,但此时this是axios实例;
用引用的方式解决,因为本身项目已经装elementUI,此时引用Message进来,它会按需去导出Message方法,此时的Message等同于this.$message
在这里插入图片描述
②响应成功
解构赋值:data、message、success
错误执行里才有error对象,此处没有所以new一个错误对象,错误对象提示信息就是message
在这里插入图片描述

在这里插入图片描述

(3)环境区分

原视频
在这里插入图片描述
①开发环境
在这里插入图片描述
②生产环境
npm run build:prod
在这里插入图片描述
在这里插入图片描述

(4)请求模块

在这里插入图片描述
封装请求模块
一定要return request因为会返回promise;
await写了一定要有async;
await代表一定会成功,失败时不需要考虑因为axios封装时有错误提示信息;
在这里插入图片描述
因为返回的promise是异步的,所以需要await代表一定是promise执行成功了(失败在axios里已经处理过),然后才能去跳转主页
在这里插入图片描述
判断是否是开发环境,是的话填手机号密码反之没有;
在这里插入图片描述

在这里插入图片描述

三、主页权限认证

在这里插入图片描述
(1)进度条
在这里插入图片描述
在这里插入图片描述
(2)如果有token
如果next里有地址不会执行后置守卫,需要手动关闭;
如果next里没有地址会执行后置守卫;
在这里插入图片描述

(3)如果没有token
白名单就是不需要token也可以访问的页面(whiteList);
在这里插入图片描述
总结
在这里插入图片描述

四、用户资料Vuex共享

原视频
在这里插入图片描述
①有token情况下调用action

在这里插入图片描述

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

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

相关文章

罹患眼肿瘤艰难求医,爱尔眼科“眶护光明”公益助力患者解除眼疾

来自达川区管村镇高寨村的冉启珍,家庭人口共4人,家里户主丈夫吴让洪于2018年患脑梗,又于2021年复发脑溢血,致肢体二级残疾,患有高血压等慢性病,需要长期服药,完全丧失劳动能力,长期需…

开源OpenStack

1.查询HCS基于OpenStack哪个版本开发 2.九大核心组件 OpenStack可以对接FC也可以对接KVM主机;(OpenStack 对接华为FusionCompute,一个集群对应 openstack 一台计算主机)-引申出nova compute 2.1nova nova两个核心组件nova contro…

期刊论文投稿指南:如何利用ChatGPT精准选择合适的期刊?

知学术AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 在学术论文的写作与发表过程中,选择合适的期刊往往是投稿成功的关键一步。面对众多期刊,研究者常常感到迷茫,不知道该如何匹配期刊与自己的研究方向。这时&#xf…

AD服务器超过180天未使用导致数据同步复制失败

问题描述 【适用版本】:FusionAccess 所有版本 环境在操作域站点间执行AD复制副本时出现如下错误:“AD不能与此服务器复制,因为距上一次与此服务器复制的时间已经超过了tombstone生存时间,此操作不能继续。”导致其他服务器、虚拟…

Xshell上Linux的基础指令

目录 1、Xshell的使用 2、Linux的常用命令 2.1 位置跳转命令 1、ls 2、cd 3、pwd 2.2 文件操作 1、touch 2、cat 3、echo 4、vim 2.3 目录操作 1、mkdir 2、rm 2.4 移动操作 1、mv 2、cp 2.5 命令手册 2.6 查找操作 2.7 进程展示 2.8 网络信息 3、搭建w…

太速科技-509-基于XCVU13P的4路QSFP28光纤PCIeX16收发卡

基于XCVU13P的4路QSFP28光纤PCIeX16收发卡 一、板卡概述 基于XCVU13P的4路QSFP28光纤PCIeX16收发卡。该板卡要求符合PCIe 3.0标准,包含一片XCVU13P-2FLGA2014I、4组64-bit/8GB DDR4;4路QSFP28 4X光纤,每路光纤支持4X25Gbps&#…

JavaSE之多态

文章目录 多态的概念多态的实现条件向上转型动态绑定静态绑定向下转型Object类 给个关注叭        个人主页 JavaSE专栏 前言:本篇文章主要整理了多态的概念、实现条件、多态性的体现、向上转型、向下转型、动态绑定和静态绑定以及Object类中的equals、toStri…

web网页---QQ注册页面的实现

代码部分 <title>QQ注册</title> </head> <style>.text-style1 {color: black;font-size: 28px;}.text-style2 {color: rgb(37, 37, 37);font-size: 17px;}.text-style3{color: rgba(189, 185, 185, 0.904);font-size: 9px;}.text-style4 {color: rg…

[枚举坤坤]二进制枚举

啊&#xff0c;哈喽&#xff0c;小伙伴们大家好。我是#Y清墨&#xff0c;今天呐&#xff0c;我要介绍的是二进制枚举。 简介 TA是枚举算法中的一种特例&#xff0c;其主要运用在求某一集合的子集个数这一算法中。其基本概念就是利用二进制数中的1与0代表选择与否&#xff0c;其…

gradle镜像下载地址

gradle镜像下载地址:Index of /gradle/https://mirrors.cloud.tencent.com/gradle/

MongoDB 的安装详情

在虚拟机里面opt下 新建一个mongodb文件夹 再新建一个opt/mongodb/data文件夹&#xff0c; 然后将挂载的mongodb数据放到data文件夹里&#xff1a; 【把mongodb的数据挂载出来&#xff0c;以后我们再次重启的时候 数据起码还会在】 冒号右边 挂载到左边的路径 docker run -…

vue npm run ...时 报错-系统找不到指定的路径

vue项目修改时&#xff0c;不知道那一步操作错误了&#xff0c;运行npm run …时报错 系统找不到指定的路径&#xff0c;对此进行记录一下&#xff01; 解决方法&#xff1a; 1、执行 npm install 命令&#xff0c;重新下载模块 2、根据下方提示执行 npm fund 查看详细信息 …

哪家云电脑便宜又好用?ToDesk云电脑、顺网云、达龙云全方位评测

陈老老老板&#x1f934; &#x1f9d9;‍♂️本文专栏&#xff1a;生活&#xff08;主要讲一下自己生活相关的内容&#xff09;生活就像海洋,只有意志坚强的人,才能到达彼岸。 &#x1f9d9;‍♂️本文简述&#xff1a;讲一下市面上云电脑的对比。 &#x1f9d9;‍♂️上一篇文…

MySQL系列—14.锁

目录 1、锁 读-读情况 写-写情况 读-写或写-读情况 2、锁的分类 2.1 读锁、写锁 2.2 表级锁 2.2.1 表级的S锁/X锁 2.2.2 意向锁 2.2.3 元数据锁(MDL锁) 2.3 行级锁 2.3.1 记录锁&#xff08;Record Locks&#xff09; 2.3.2 间隙锁 2.3.3 临键锁&#xff08;Next…

(C/C++)文件

目录 1. 为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 3. 文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 4. 文件的顺序读写 fputc fgetc fputs fgets fprintf fscanf fwrite fread sprintf和sscanf snprintf ​编辑 4对比一组函数(prin…

【Spring篇】初识之Spring的入门程序及控制反转与依赖注入

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】&#xff0c;【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 文章目录 &#x1f3af;初始Spring …

cmake 编译 01

CMakeLists.txt cmake_minimum_required(VERSION 3.10)project(MyProject)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True)# 如果顶层 CMakeLists.txt 文件中使用了 add_subdirectory() 命令&#xff0c;CMake 会进入指定的子目录&#xff0c;并处理该目录…

每周心赏|一觉醒来,我得诺奖了?

这次诺奖名单我看了&#xff0c;我不在里面&#xff0c;说实话我很失望&#x1f62e;‍&#x1f4a8;&#xff0c;希望AI可以懂事点&#xff0c;立刻、马上为我颁奖&#xff01; AI&#xff1a;收到&#x1fae1;&#xff0c;现在就去做。 自从发现了这个可以做诺奖海报的智能…

【Python】NumPy(一):数据类型、创建数组及基本操作

目录 ​NumPy初识 1.什么是NumPy&#xff1f; NumPy的应用 NumPy数据类型 Python基本数据类型 NumPy数据类型 NumPy数组 创建数组 1.使用numpy.array() 2.使用arange()方法创建 3.使用linspace()创建等差数列 4使用zeros()创建数组 5.使用ones()创建数组 6.利用…

精华帖分享 | 从华泰研报出发,开启人工智能炼丹篇章!

本文来源于量化小论坛策略分享会板块精华帖&#xff0c;作者为1go的程序猿&#xff0c;发布于2024年3月30日。 以下为精华帖正文&#xff1a; 最近研究完邢大新发布的各种框架后&#xff0c;突然冒出了想当牛马的想法。但是&#xff0c;本人作为一个量化小白&#xff0c;从头开…