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 25 Vue.js
如何实现vue的tree组件
Dec 03 Vue.js
Vue如何跨组件传递Slot的实现
Dec 14 Vue.js
vue 实现基础组件的自动化全局注册
Dec 25 Vue.js
vue 动态创建组件的两种方法
Dec 31 Vue.js
vue+elementui通用弹窗的实现(新增+编辑)
Jan 07 Vue.js
Vue中引入svg图标的两种方式
Jan 14 Vue.js
Vue实现摇一摇功能(兼容ios13.3以上)
Jan 26 Vue.js
vue使用节流函数的踩坑实例指南
May 20 Vue.js
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 Vue.js
vue+element ui实现锚点定位
Jun 29 Vue.js
Vue OpenLayer测距功能的实现
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
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
PHP中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
PHP中把对象转换为关联数组代码分享
2015/04/09 PHP
php+mysql+ajax 局部刷新点赞/取消点赞功能(每个账号只点赞一次)
2020/07/24 PHP
javascript显示选择目录对话框的代码
2008/11/10 Javascript
ymPrompt的doHandler方法来实现获取子窗口返回值的方法
2010/06/25 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
JS实现图片平面旋转的方法
2016/03/01 Javascript
手机端图片缩放旋转全屏查看PhotoSwipe.js插件实现
2016/08/25 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
vue实现的上拉加载更多数据/分页功能示例
2019/05/25 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
2020/02/17 Javascript
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
Python中如何获取类属性的列表
2016/12/26 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
python复制文件到指定目录的实例
2018/04/27 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
numpy.random模块用法总结
2019/05/27 Python
django admin.py 外键,反向查询的实例
2019/07/26 Python
python hashlib加密实现代码
2019/10/17 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
国外的一些J2EE面试题一
2012/10/13 面试题
民族团结演讲稿范文
2014/08/27 职场文书
计划生育证明格式范本
2014/09/12 职场文书
药店收银员岗位职责
2015/04/07 职场文书