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使用Elementui修改默认的最快方法
Dec 05 Vue.js
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
Dec 19 Vue.js
详解Vue的七种传值方式
Feb 08 Vue.js
vue中h5端打开app(判断是安卓还是苹果)
Feb 26 Vue.js
vue使用节流函数的踩坑实例指南
May 20 Vue.js
vue3中provide && inject的使用
Jul 01 Vue.js
Vue中Object.assign清空数据报错的解决方案
Mar 03 Vue.js
Vue中使用import进行路由懒加载的原理分析
Apr 01 Vue.js
vue中控制mock在开发环境使用,在生产环境禁用方式
Apr 06 Vue.js
vue如何在data中引入图片的正确路径
Jun 05 Vue.js
vue递归实现树形组件
Jul 15 Vue.js
Vue深入理解插槽slot的使用
Aug 05 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模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
使用laravel指定日志文件记录任意日志
2019/10/17 PHP
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
jQuery中DOM操作实例分析
2015/01/23 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
AngularJS 实现按需异步加载实例代码
2015/10/18 Javascript
jquery判断输入密码两次是否相等
2020/04/22 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
2017/05/30 Javascript
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
基于vue+element实现全局loading过程详解
2020/07/10 Javascript
前端vue+elementUI如何实现记住密码功能
2020/09/20 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
numpy中的ndarray方法和属性详解
2019/05/27 Python
Python控制Firefox方法总结
2019/06/03 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
Python集合操作方法详解
2020/02/09 Python
G-Form护具官方网站:美国运动保护装备
2019/09/04 全球购物
正隆泰信息技术有限公司上机题
2012/06/14 面试题
JSF界面控制层技术
2013/06/17 面试题
法人身份证明书
2014/10/08 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
中班上学期个人总结
2015/02/12 职场文书
2019秋季运动会口号
2019/06/25 职场文书
python 管理系统实现mysql交互的示例代码
2021/12/06 Python