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编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
vue 数据操作相关总结
Dec 17 Vue.js
vue 在服务器端直接修改请求的接口地址
Dec 19 Vue.js
Vue实现省市区三级联动
Dec 27 Vue.js
vue中watch的用法汇总
Dec 28 Vue.js
Vue 修改网站图标的方法
Dec 31 Vue.js
vue中使用echarts的示例
Jan 03 Vue.js
vue-cli中实现响应式布局的方法
Mar 02 Vue.js
vue3中的组件间通信
Mar 31 Vue.js
解读Vue组件注册方式
May 15 Vue.js
一起来看看Vue的核心原理剖析
Mar 24 Vue.js
vue 数字翻牌器动态加载数据
Apr 20 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排序算法(冒泡排序,快速排序)
2012/10/09 PHP
解决Codeigniter不能上传rar和zip压缩包问题
2014/03/07 PHP
浅谈PHP中foreach/in_array的使用
2015/11/02 PHP
php实现和c#一致的DES加密解密实例
2017/07/24 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
PHP大文件分割分片上传实现代码
2020/12/09 PHP
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
利用javascript解决图片缩放及其优化的代码
2012/05/23 Javascript
js函数名与form表单元素同名冲突的问题
2014/03/07 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
创建一般js对象的几种方式
2017/01/19 Javascript
javascript 正则表达式分组、断言详解
2017/04/20 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
Angular 实现输入框中显示文章标签的实例代码
2018/11/07 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
Nuxt配置Element-UI按需引入的操作方法
2020/07/06 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
微信小程序实现页面左右滑动
2020/11/16 Javascript
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
[01:10]为家乡而战!完美世界城市挑战赛全国总决赛花絮
2019/07/25 DOTA
Python中的包和模块实例
2014/11/22 Python
python通过get,post方式发送http请求和接收http响应的方法
2015/05/26 Python
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
Python编写Windows Service服务程序
2018/01/04 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
HTML5 与 XHTML2
2008/10/17 HTML / CSS
德国古洛迷亚百货官网:GALERIA Kaufhof
2017/06/20 全球购物
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
介绍一下.net和Java的特点和区别
2012/09/26 面试题
目标责任书范文
2014/04/14 职场文书
钳工实训报告总结
2014/11/04 职场文书
2014年班组工作总结
2014/11/20 职场文书
护士节慰问信
2015/02/15 职场文书
Python开发五子棋小游戏
2022/04/28 Python