zoukankan      html  css  js  c++  java
  • axios实现拦截器

    项目中通常使用token进行用户权限认证,需要在请求的header中添加token信息进行验证,拦截返回的状态码进行跳转或重新登陆,在全局配置这些不妥,所以新建一个axios实例进行项目的配置。
    // util.js
    import axios from 'axios'
    import cookies from 'vue-cookies'
    import router from 'vue-router'
    export const $axios = axios.create({ // 这里是配置项
      timeout: 7000,
    })
    
    // 拦截请求
    $axios.interceptors.request.use(
      config => {
        console.log(config);
        let t = cookies.get('t')
        if (t) {
          config.headers.t = t
        } else {
          router.replace({path: '/login'})
        }
        return config
      },
      err => {
        return Promise.reject(err)
      }
    )
    
    // 拦截响应
    $axios.interceptors.response.use(
      response => {
        console.log(response)
        return response
      },
      err => {
        console.log(err);
        if (err.response) {
          switch (err.response.status) {
            case 401:
              // 这里写清除token的代码
              router.replace({
                path: 'login',
                query: {redirect: router.currentRoute.fullPath} // 登录成功后跳入浏览的当前页面
              })
          }
        }
        return Promise.reject(err)
      }
    )

    使用

    import Vue from 'vue'
    import {$axios} from './assets/lib/util'
    
    Vue.prototype.$http = $axios
  • 相关阅读:
    拼接sql ()
    HttpPostedFileBase 基类
    jQuery获取Select元素
    HttpFileCollection 类使用
    C# 截取字符串——
    判断人员js
    删除PLSQL 关联表
    mongodb常用操作方法
    json返回取值操作
    idhttp请求网址中的中文输入
  • 原文地址:https://www.cnblogs.com/xtjatswc/p/10329816.html
Copyright © 2011-2022 走看看