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 使用el-select 时 change事件的触发问题
Nov 17 Vue.js
详解vue实现坐标拾取器功能示例
Nov 18 Vue.js
vue3自定义dialog、modal组件的方法
Jan 04 Vue.js
vuex的使用和简易实现
Jan 07 Vue.js
如何在vue中使用HTML 5 拖放API
Jan 14 Vue.js
使用Vue.js和MJML创建响应式电子邮件
Mar 23 Vue.js
Vue中插槽slot的使用方法与应用场景详析
Jun 08 Vue.js
Vue + iView实现Excel上传功能的完整代码
Jun 22 Vue.js
Vue3.0中Ref与Reactive的区别示例详析
Jul 07 Vue.js
详解Vue项目的打包方式(生成dist文件)
Jan 18 Vue.js
vue 自定义的组件绑定点击事件
Apr 21 Vue.js
vue实现简易音乐播放器
Aug 14 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 变量定义方法
2009/06/14 PHP
php中hashtable实现示例分享
2014/02/13 PHP
微信公众平台天气预报功能开发
2014/07/06 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
2019/03/22 PHP
本地对象Array的原型扩展实现代码
2010/12/04 Javascript
jQuery获取样式中的背景颜色属性值/颜色值
2012/12/17 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
2013/04/12 Javascript
JavaScript实现简单的时钟实例代码
2013/11/23 Javascript
ie浏览器使用js导出网页到excel并打印
2014/03/11 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
js实现以最简单的方式将数组元素添加到对象中的方法
2017/12/20 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
JS使用tween.js动画库实现轮播图并且有切换功能
2018/07/17 Javascript
解决bootstrap-select 动态加载数据不显示的问题
2018/08/10 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
Angular 多模块项目构建过程
2020/02/13 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
vue中使用router全局守卫实现页面拦截的示例
2020/10/23 Javascript
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
在Django的form中使用CSS进行设计的方法
2015/07/18 Python
详解Python中的array数组模块相关使用
2016/07/05 Python
Python实现加载及解析properties配置文件的方法
2018/03/29 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
Java Servlet API中forward() 与redirect()的区别
2014/04/20 面试题
终止劳动合同协议书
2014/10/05 职场文书
网络销售员岗位职责
2015/04/11 职场文书
上诉答辩状范文
2015/05/22 职场文书
出纳2015年度工作总结范文
2015/10/14 职场文书
《7的乘法口诀》教学反思
2016/02/18 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
Pillow图像处理库安装及使用
2022/04/12 Python