首页 > 网络 > 网络热点

50、token过期

常驻编辑 网络热点 2022-07-12 姓名   错误   页面   数据


mgH拜客生活常识网

mgH拜客生活常识网


mgH拜客生活常识网

login.vue




user.vue



           

request.js

import axios from "axios";
var instance = axios.create({
  baseURL: "http://toutiao.itheima.net/v1_0",
  timeout: 5000,
});
const requestFreshToken = axios.create({
  baseURL: "http://toutiao.itheima.net/v1_0",
  timeout: 5000,
});

// 添加请求拦截器
instance.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    let tokenObj = JSON.parse(localStorage.getItem("token"));
    if (tokenObj && tokenObj.token) {
      // 添加请求头
      config.headers.Authorization = "Bearer " + tokenObj.token;
    }
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 添加响应拦截器
instance.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    return response.data;
  },
  async function (error) {
    // console.log(error.response, 222);
    if (error.response.status === 401) {
      // console.log(error, 88);
      /* 解决token过期的问题 */
      let tokenObj = JSON.parse(localStorage.getItem("token"));
      const res = await requestFreshToken({
        method: "PUT",
        url: "/authorizations",
        headers: {
          Authorization: "Bearer " + tokenObj.refresh_token,
        },
      });
      // 将使用刷新token获取的新的token存储起来
      localStorage.setItem(
        "token",
        JSON.stringify({
          token: res.data.data.token,
          refresh_token: tokenObj.refresh_token,
        })
      );
      // console.log(res, 777);
      //  这里重新发送请求后  使用的是request  又会走上面的请求拦截  又会重新携带刚刚存的新的token
      return instance(error.response.config);
    }
    // 对响应错误做点什么
    return Promise.reject(error);
  }
);

export default instance;

router/index.js

{
        path: "/",
        component: () => import("../tokens/login.vue"),
        name: "login",
      },
      {
        path: "/user",
        component: () => import("../tokens/user.vue"),
        name: "user",
      },

api/use.js

import request from "@/utlis/request.js";
export const loginApi = (data) => {
  return request({
    method: "post",
    url: "/authorizations",
    data,
  });
};

export const userApi = () => {
  return request({
    url: "/user",
  });
};

相关阅读:

  • 名字打多少分(姓名评分多少分才算好)
  • 属猴不宜叫什么名字,属猴的避讳什么属相
  • 属鸡不能起什么名字,生肖鸡取什么名字最好
  • 生肖猪取名宜忌,属猪姓名忌讳
  • 蛇起名喜忌,蛇生肖起名有什么禁忌
  • 属马的人取名宜忌,生肖马起名忌讳
  • 生肖马取名字大全,什么字代表生肖马
  • 属兔人的姓名宜忌,兔取名喜忌
  • 两公司侵犯易烊千玺肖像权及姓名权 被判罚100万并公开
  • 王艳肖像姓名遭品牌冒用 工作室发声明打假
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。