vue 导航守卫和axios拦截器有哪些区别


Posted in Vue.js onDecember 19, 2020

在Vue项目中,有两种用户登录状态判断并处理的情况,分别为:导航守卫和axios拦截器。

一、什么是导航守卫?

vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航。(在路由跳转时触发)

我们主要介绍的是可以验证用户登录状态的全局前置守卫,当一个导航触发时,全局前置守卫按照创建顺序调用。守卫是异步解析执行,此时导航在所有守卫 resolve 完之前一直处于等待中。

const router = new VueRouter({ ... })
 
router.beforeEach((to, from, next) => {
  // ...
})

 每个守卫方法接收三个参数:

to:  即将要进入的目标路由对象

from: 当前导航正要离开的路由

next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。

  • next(): 进行管道中的下一个钩子。如果全部钩子执行完了,则导航的状态就是 confirmed (确认的)。
  • next(false): 中断当前的导航。如果浏览器的 URL 改变了 (可能是用户手动或者浏览器后退按钮),那么 URL 地址会重置到 from 路由对应的地址。
  • next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航
  • next(error): (2.4.0+) 如果传入 next 的参数是一个 Error 实例,则导航会被终止且该错误会被传递给 router.onError() 注册过的回调。

注意:一定要确保要调用 next 方法,否则钩子就不会被 resolved。

二、什么是axios拦截器?

在请求或响应被 then 或 catch 处理前拦截它们,分为请求拦截器(发送请求前触发)和响应拦截器(得到响应结果后触发)。(在请求接口调用时触发)

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });
 
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response;
  }, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
  });

注意:一定要有返回值

三、导航守卫和拦截器的使用

用户登录成功后我们将后台返回的用户token信息存储至sessionStorage中

vue 导航守卫和axios拦截器有哪些区别

路由跳转时使用导航守卫

vue 导航守卫和axios拦截器有哪些区别

以上就是vue 导航守卫和axios拦截器有哪些区别的详细内容,更多关于vue 导航守卫和axios拦截器的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
浅析VUE防抖与节流
Nov 24 Vue.js
vue基于Echarts的拖拽数据可视化功能实现
Dec 04 Vue.js
vue图片裁剪插件vue-cropper使用方法详解
Dec 16 Vue.js
vue项目中openlayers绘制行政区划
Dec 24 Vue.js
在vue项目中封装echarts的步骤
Dec 25 Vue.js
vuex的使用和简易实现
Jan 07 Vue.js
vue3.0 项目搭建和使用流程
Mar 04 Vue.js
使用vue-element-admin框架从后端动态获取菜单功能的实现
Apr 29 Vue.js
Vue vee-validate插件的简单使用
Jun 22 Vue.js
vue使用echarts实现折线图
Mar 21 Vue.js
vue elementUI表格控制对应列
Apr 13 Vue.js
vue3语法糖内的defineProps及defineEmits
Apr 14 Vue.js
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
Dec 19 #Vue.js
Vue实现手机号、验证码登录(60s禁用倒计时)
Dec 19 #Vue.js
Vue——前端生成二维码的示例
Dec 19 #Vue.js
如何在vue中使用kindeditor富文本编辑器
Dec 19 #Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 #Vue.js
vue 通过base64实现图片下载功能
Dec 19 #Vue.js
Vue中computed和watch有哪些区别
Dec 19 #Vue.js
You might like
PHP容易忘记的知识点分享
2013/04/30 PHP
php define的第二个参数使用方法
2013/11/04 PHP
php调用C代码的实现方法
2014/03/11 PHP
Codeigniter生成Excel文档的简单方法
2014/06/12 PHP
PHP中比较时间大小实例
2014/08/21 PHP
php猴子选大王问题解决方法
2015/05/12 PHP
PHP回调函数概念与用法实例分析
2017/11/03 PHP
PHP5.5基于mysqli连接MySQL数据库和读取数据操作实例详解
2019/02/16 PHP
php探针不显示内存解决方法
2019/09/17 PHP
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
jQuery实现根据类型自动显示和隐藏表单
2015/03/18 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
Vue.js 中的 v-model 指令及绑定表单元素的方法
2018/12/03 Javascript
python在控制台输出进度条的方法
2015/06/20 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
英国二手物品交易网站:Preloved
2017/10/06 全球购物
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
Linux的主要特性
2014/10/06 面试题
应届毕业生的自我鉴定
2013/11/13 职场文书
爱岗敬业演讲稿
2014/05/05 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
前端使用svg图片改色实现示例
2022/07/23 HTML / CSS