当前位置: 首页 > news >正文

Vue中的使用axios封装的全局拦截器

使用axios,并挂载到全局

以下配置在main.js中
其他页面在使用axios的时候直接 this.$axios就可以了

import Axios from 'axios';
Vue.prototype.$axios = Axios;

配置全局请求拦截器

使用如下方法
axios.interceptors.request.use(config=>{},err=>{})
报错时通过路由push到error界面

Axios.interceptors.request.use(
  config => {
    return config;
  },
  error => {
    // 跳转error页面
    router.push({ path: "/error" });
    return Promise.reject(error);
  }
);

配置全局响应拦截器

使用如下方法
service.interceptors.response.use(response=>{}, err=>{})
通过服务器返回的状态码分别进行不同操作

Axios.interceptors.response.use(
  res => {
    if (res.data.code === "401") {
      // 401表示没有登录
      // 提示没有登录
      Vue.prototype.notifyError(res.data.msg);
      // 修改vuex的showLogin状态,显示登录组件
      store.dispatch("setShowLogin", true);
    }
    if (res.data.code === "500") {
      // 500表示服务器异常
      // 跳转error页面
      router.push({ path: "/error" });
    }
    return res;
  },
  error => {
    // 跳转error页面
    router.push({ path: "/error" });
    return Promise.reject(error);
  }
);

全局解析守卫

点击查看官方文档
用于在进入需要用户权限的页面前校验是否已经登录

router.beforeResolve((to, from, next) => {
  const loginUser = store.state.user.user;
  // 判断路由是否设置相应校验用户权限
  if (to.meta.requireAuth) {
    if (!loginUser) {
      // 没有登录,显示登录组件
      store.dispatch("setShowLogin", true);
      if (from.name == null) {
        //此时,是在页面没有加载,直接在地址栏输入链接,进入需要登录验证的页面
        next("/");
        return;
      }
      // 终止导航
      next(false);
      return;
    }
  }
  next();
});

相关文章:

  • [Swift] Enum 好用, Enum 可以更易用
  • VUE中的全局时间过滤器(格式化时间)
  • Android ScrollView滑动事件和子控件点击事件冲突
  • 阿里云CentOs8安装node,pm2,mysql数据库以及运行.sql文件
  • cocoapods安装完第三方类库后不生成workspace
  • 阿里云CentOs搭建node环境以及配置API接口服务器
  • 区块链之以太坊初体验——以太坊平台学习总结
  • 阿里云CentOs中Vue项目的上线(node+express+pm2)
  • iptables总结_02
  • uni-app中的分类页面(仿京东分类页面)(scroll-view的使用)
  • oracle select decode判断 ,sign使用例子
  • 快速入门vuex带案例说明(超详细易理解)
  • wifi信道1,6,11科普
  • uni-app中微信小程序端使用腾讯地图API实现定位服务(超详细教程)
  • CSS 3学习——transition 过渡
  • Angularjs之国际化
  • Codepen 每日精选(2018-3-25)
  • IDEA 插件开发入门教程
  • k个最大的数及变种小结
  • mysql外键的使用
  • PaddlePaddle-GitHub的正确打开姿势
  • rabbitmq延迟消息示例
  • React-flux杂记
  • 记一次用 NodeJs 实现模拟登录的思路
  • 强力优化Rancher k8s中国区的使用体验
  • 区块链共识机制优缺点对比都是什么
  • 如何进阶一名有竞争力的程序员?
  • 1.Ext JS 建立web开发工程
  • 2017年360最后一道编程题
  • ​批处理文件中的errorlevel用法
  • $.proxy和$.extend
  • (多级缓存)缓存同步
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (转载)深入super,看Python如何解决钻石继承难题
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net 按比例显示图片的缩略图
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • @KafkaListener注解详解(一)| 常用参数详解
  • @SuppressWarnings(unchecked)代码的作用
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [BT]BUUCTF刷题第8天(3.26)
  • [C/C++随笔] char与unsigned char区别
  • [ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总
  • [LeetCode]-225. 用队列实现栈
  • [LeetCode]Balanced Binary Tree
  • [one_demo_10]递归解决汉诺塔问题
  • [osgearth]通过API创建一个earth模型