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

一、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.mzph.cn/diannao/57242.shtml

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

相关文章

09_实现reactive之代理 Set 和 Map

目录 创建代理建立响应式联系避免污染原始数据处理 forEachfor...ofvalues 与 keys 方法 Set 和 Map 都有特定的属性和方法来操作自身,因此需要单独处理。 创建代理 我们来看一段案例代码,体验一下和它们的独特之处,如下: const…

《使用Gin框架构建分布式应用》阅读笔记:p108-p126

《用Gin框架构建分布式应用》学习第8天,p108-p126总结,总计18页。 一、技术总结 1.Redis eviction policy (1)什么是 eviction policy? The eviction policy determines what happens when a database reaches its memory limit. (2)配置示例 在r…

基于Multisim电子配料秤电路设计(含仿真和报告)

【全套资料.zip】电子配料秤电路设计Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 电子配料秤仿真功能: 准确测量物体重量,精确度0.1Kg使用两位数码管显示重量信息 使用拨码…

mysql的卸载与安装

一、mysql的卸载 1、用管理员模式的打开cmd,我的服务名是mysql。 net stop mysql sc delete 服务名 2、将下图中有包含‘bin’目录,‘data’目录等等的这个总目录删掉 如图我的目录是:mysql-5.7.28-winx64 3、删除mysql的隐藏文件 C:\Program…

OBOO鸥柏丨《满天星(MTSTAR)》信息发布系统售后服务点位收费标准

户外/室内款系列商用显示屏终端外观贴有OBOO鸥柏品牌铭牌等出厂标识,均为OBOO鸥柏官方出品出厂,均享受永久技术免费服务。认准鸥柏(OBOO)官方出厂等商用液晶显示硬件产品配套。鸥柏(OBOO)满天星(MTSTAR)多媒体信息发布系统是一种集成了多种多媒体元素和技…

在做题中学习(66):两数相加

解法:模拟 思路:定义一个变量t,存储相加后的结果,个位赋给新节点,十位(表示有进位)留下,累加到下一次加法(相当于上进位)。while里即便cur1和cur2都为空了&a…

3dsMax 展管道UV

3dsMax 展管道UV 创建管道模型 https://blog.csdn.net/GoodCooking/article/details/140876371有管道模型之后,进行展UV 展开UV之后 旋转UV,大致靠左 挨个拉直拐角 挨个拉直拐角 缩放到UV里面,不要拖拽点。 水平缩放,将U…

Aurora 4.6.2 | 第三方谷歌商店,无需谷歌框架

Aurora Store是谷歌Play Store的一个非官方FOSS客户端,通常称为‘极光商店’,设计优雅。Aurora Store不仅可以下载、更新和搜索Play Store等应用程序,还为用户提供了新功能。应用提供范围广泛的游戏和应用程序,包括音乐流媒体、购…

互联网人口红利趋缓下的社群粉丝经济新模式探索

摘要:随着互联网人口红利消失近十年,国内互联网人口红利爆发时期凭借大量用户取得成功的模式不再适用。如今互联网人口增长进入平缓期,社群粉丝经济成为新方向。其能借助人群画像精准推送营销信息,降低成本。如“21 链动模式 AI 智…

右上角的钩自存elemntui样式

<div class"img-container"><div class"custom-upload-success"><i class"el-icon-check"></i></div><img :src"imgObj.url" alt"图片"> </img><div class"overlay"…

tauri解决convertFileSrc转换文件为url后,更新文件内容但是页面没有更新

我这里之前的逻辑是将存储之后的图片文件&#xff0c;直接使用convertFileSrc转换为url的形式存储起来了&#xff0c;然后后面有页面展示的地方&#xff0c;直接加载就可以了。但是这样就遇到问题&#xff0c;更新了图片文件&#xff0c;但是页面上展示的图片还是没有变化。这是…

C++ <queue>队列的priority_queue<int,vector<int>等的用法(本博主原创<C++>queue(队列)的详解

点击蓝字 关注我们 首先&#xff0c; 在C中&#xff0c;队列&#xff08;queue&#xff09;是一种先进先出&#xff08;FIFO&#xff09;的数据结构&#xff0c;可以用来存储和访问数据。C标准库中提供了队列的实现&#xff0c;可以通过包含头文件<queue>来使用。 C中…

15分钟学Go 第1天:Go语言简介与特点

Go语言简介与特点 1. Go语言概述 Go语言&#xff08;又称Golang&#xff09;是由谷歌于2007年开发并在2009年正式发布的一种开源编程语言。它旨在简单、高效地进行软件开发&#xff0c;尤其适合于网络编程和分布式系统。 1.1 发展背景 多核处理器&#xff1a;随着计算机硬件…

10.22 软考初级网络管理员之局域网

局域网的基本概念&#xff0c;IE802标准 局域网是指将分散在一个局部地理范围的多台计算机通过传输媒体连接起来的通信网络。IEEE802&#xff0c;对应物理层和数据链路层 IE802标准 以太网技术&#xff08;局域网通信协议、数据传输方式&#xff09; 分值占比高 ‌‌以太网是…

Maven - Assembly实战

文章目录 PreAssembly插件基本配置使用示例示例1&#xff1a;创建包含依赖的JAR包示例2&#xff1a;自定义描述符示例3&#xff1a;多模块项目打包 实战 _qiwenfile结构pom.xml触发脚本 实战 _nacos输出 zip / tar.gz常见问题及解决方案 Pre Spring Boot - 瘦身大作战&#xf…

【解决proto文件生成的java 在intellij idea引用会报错】

现象 下载新项目 代码有引用proto生成的java类 会一直报红 我的idea版本2024.2.3&#xff0c;比较新&#xff0c;自动装载了插件&#xff0c;旧版本需要自己装 解决方式 Maven生成资源 这一步是为了先从proto生成java文件 安装这个插件 右键项目->Maven->Generated…

关于检索评价的一份介绍

在信息检索中&#xff0c;当我们进行完检索评价后就需要对于检索所得的结果进行评价&#xff0c;类似于机器学习中的模型评估那样&#xff0c;因此我们需要一些度量方式来对于信息检索的结果进行评价。 在这篇文章中&#xff0c;我就将介绍一些标准用于度量信息检索的结果。具…

双十一宠物空气净化器应该专门选才不踩坑?有哪几款推荐

对于我来说&#xff0c;双十一可以什么都不买&#xff0c;唯独不能缺了宠物空气净化器。 还不是养的“逆子”掉毛太严重了&#xff0c;很多次都是和我家猫待在一起的时候就会发现手机屏幕上都是猫毛&#xff0c;更过分的是就连鼻子里、眼睛里都是猫毛。我也不是没试过用其它除毛…

Java动态代理 | 代码实现Demo

一、代码实现 1. 编写UserService接口 import java.util.List;public interface UserService {/*** 登录*/void login(String userName, String password);/*** 查询用户列表*/List<String> getUserList(); }2. 编写UserService接口实现类 import java.util.Arrays; i…

JS两数之和

文章目录 &#x1f453;题目描述&#x1f576;思路&#x1f97c;方法一&#x1f9e4;方法二&#x1fa72;方法三&#x1f9e5;总结 &#x1f453;题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&am…