react的axios添加token和token失效验证

1代码如下:

import axios from 'axios'
import store from '../store'

const instance = axios.create({
  baseURL: '/api',	// 通过使用配置的proxy来解决跨域
  timeout: 5000
});

// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  let token = localStorage.getItem("x-auth-token");
  if (token) {
    config.headers = {
      "x-auth-token": token
    }
  }
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 对响应数据做点什么
  return response.data;
}, function (error) {
  if (error.response.data.errCode === 1002) {
    // token过期,先告诉用户登录失效,并重新登录
    store.dispatch({
      typr: 'showAlert', value: {
        alertType: 'error',
        alertContent: '登录失效,即将跳转登录页'
      }
    })
    setTimeout(() => {
      // 关闭alert弹框
      store.dispatch({ type: 'hideAlert' });
      // 跳转登录页,开发阶段都是在locahast:8080根路径下开发,所以可以用window.location.href='/login',
      // window.location.href='/login'
      // 项目上线,由于路由模式改成啦HashRouter。所以应该修改的是hash值
      window.location.hash = '#/login'
    }, 2000)

  }
  // 对响应错误做点什么
  return Promise.reject(error);
});
// deng登录过期与token过期



export default instance;

 1.token失效验证:在响应拦截器的错误回调中编写逻辑

if (error.response.data.errCode === 1002) {
    // token过期,先告诉用户登录失效,并重新登录
清空token
// window.location.href='/login'
      // 项目上线,由于路由模式改成啦HashRouter。所以应该修改的是hash值
//跳转到首页
 window.location.hash = '#/login'
}

2.在请求拦截器成功回调中加token

let token = localStorage.getItem("x-auth-token");
  if (token) {
    config.headers = {
      "x-auth-token": token
    }
  }

3axios传参

get传参

export const GetloginApi=(params)=>requset.get('/usrer/home' ,{params})

post传参

export const PostloginApi=(params)=>requset.post('/usrer/home' ,params)


版权声明:本文为m0_60322879原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。