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 24 Vue.js
Vue router传递参数并解决刷新页面参数丢失问题
Dec 02 Vue.js
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
Vue实现多页签组件
Jan 14 Vue.js
如何封装Vue Element的table表格组件
Feb 06 Vue.js
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
vue3中的组件间通信
Mar 31 Vue.js
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
Jun 09 Vue.js
一起来看看Vue的核心原理剖析
Mar 24 Vue.js
如何vue使用el-table遍历循环表头和表体数据
Apr 26 Vue.js
vue ant design 封装弹窗表单的使用
Jun 01 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迭代器实现斐波纳契数列的函数
2013/11/12 PHP
PHP面向对象之旅:深入理解static变量与方法
2014/01/06 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
javascript 防止刷新,后退,关闭
2010/08/07 Javascript
各浏览器对link标签onload/onreadystatechange事件支持的差异分析
2011/04/27 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
2015/08/28 Javascript
js中flexible.js实现淘宝弹性布局方案
2020/06/23 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
JavaScript实现的简单加密解密操作示例
2018/06/01 Javascript
详解Vue用cmd创建项目
2019/02/12 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
vue-router 中 meta的用法详解
2019/11/01 Javascript
Vue中的this.$options.data()和this.$data用法说明
2020/07/26 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
利用js canvas实现五子棋游戏
2020/10/11 Javascript
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
python语言元素知识点详解
2019/05/15 Python
python集合是否可变总结
2019/06/20 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
策划总监岗位职责
2014/02/16 职场文书
锦旗标语大全
2014/06/23 职场文书
2014年乡镇卫生院工作总结
2014/11/24 职场文书
2014年学前班工作总结
2014/12/08 职场文书
MySQL 常见存储引擎的优劣
2021/06/02 MySQL
Oracle11g r2 卸载干净重装的详细教程(亲测有效已重装过)
2021/06/04 Oracle
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python