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-cli 创建模板项目
Nov 19 Vue.js
Vue——前端生成二维码的示例
Dec 19 Vue.js
利用Vue实现简易播放器的完整代码
Dec 30 Vue.js
Vue实现图书管理案例
Jan 20 Vue.js
vue+echarts实现中国地图流动效果(步骤详解)
Jan 27 Vue.js
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
关于Vue Router的10条高级技巧总结
May 06 Vue.js
深入理解Vue的数据响应式
May 15 Vue.js
vue实现同时设置多个倒计时
May 20 Vue.js
vue-cropper组件实现图片切割上传
May 27 Vue.js
VUE解决跨域问题Access to XMLHttpRequest at
May 06 Vue.js
vue如何清除浏览器历史栈
May 25 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五种设计模式小结
2011/03/23 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
yii2.0之GridView自定义按钮和链接用法
2014/12/15 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
php+laravel依赖注入知识点总结
2019/11/04 PHP
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
5个数组Array方法: indexOf、filter、forEach、map、reduce使用实例
2015/01/29 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
mpvue写一个CPASS小程序的示例
2018/09/04 Javascript
Vue解析带html标签的字符串为dom的实例
2019/11/13 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
js实现拖动缓动效果
2020/01/13 Javascript
原生js+canvas实现贪吃蛇效果
2020/08/02 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
Python的Django框架安装全攻略
2015/07/15 Python
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
简单谈谈Python中的元祖(Tuple)和字典(Dict)
2017/04/21 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
Django实现发送邮件功能
2019/07/18 Python
python协程gevent案例 爬取斗鱼图片过程解析
2019/08/27 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
Python实现分数序列求和
2020/02/25 Python
Django models filter筛选条件详解
2020/03/16 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
公司行政经理岗位职责
2013/12/24 职场文书
教师党性分析材料
2014/02/04 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
物流仓管员岗位职责
2015/04/01 职场文书
2015年社区工作总结
2015/04/08 职场文书
公司岗位说明书
2015/10/08 职场文书
python中pandas.read_csv()函数的深入讲解
2021/03/29 Python
python基础之停用词过滤详解
2021/04/21 Python
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android