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实现树状表格效果
Dec 29 Vue.js
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
Vue 数据响应式相关总结
Jan 28 Vue.js
vue使用echarts画组织结构图
Feb 06 Vue.js
Vue基本指令实例图文讲解
Feb 25 Vue.js
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
vue如何批量引入组件、注册和使用详解
May 12 Vue.js
Vue CLI中模式与环境变量的深入详解
May 30 Vue.js
vue实现拖拽交换位置
Apr 07 Vue.js
vue实现列表垂直无缝滚动
Apr 08 Vue.js
vue动态绑定style样式
Apr 20 Vue.js
VUE解决跨域问题Access to XMLHttpRequest at
May 06 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调用Google translate_tts api实现代码
2013/08/07 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
php统计文章排行示例
2014/03/04 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
js 加载时自动调整图片大小
2008/05/28 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
range 标准化之获取
2011/08/28 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
基于JavaScript实现快速转换文本语言(繁体中文和简体中文)
2016/03/07 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
关于js二维数组和多维数组的定义声明(详解)
2016/10/02 Javascript
最好用的Bootstrap fileinput.js文件上传组件
2016/12/12 Javascript
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
Angular2 组件交互实例详解
2017/08/24 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
vue中使用vue-pdf的方法详解
2020/09/05 Javascript
python获取list下标及其值的简单方法
2016/09/12 Python
Python实现的建造者模式示例
2018/08/06 Python
Python3爬虫中识别图形验证码的实例讲解
2020/07/30 Python
Python调用高德API实现批量地址转经纬度并写入表格的功能
2021/01/12 Python
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
城市轨道专业个人求职信范文
2013/09/23 职场文书
消防先进事迹材料
2014/02/10 职场文书
本科生求职信
2014/06/17 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
用人单位聘用意向书
2015/05/11 职场文书
音乐研修感悟
2015/11/18 职场文书
从np.random.normal()到正态分布的拟合操作
2021/06/02 Python
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle