axios拦截器获取并存储token

vue-resource 拦截器使用

在vue项目使用vue-resource的过程中,临时增加了一个需求,需要在任何一个页面任何一次http请求,增加对token过期的判断,如果token已过期,需要跳转至登录页面。如果要在每个页面中的http请求操作中添加一次判断,那么会是一个非常大的修改工作量。
vue-resource的interceptors拦截器的作用正是解决此需求的妙方。在每次http的请求响应之后,如果设置了拦截器如下,会优先执行拦截器函数,获取响应体,然后才会决定是否把response返回给then进行接收。那么我们可以在这个拦截器里边添加对响应状态码的判断,来决定是跳转到登录页面还是留在当前页面继续获取数据。

下面的是登录页面。需要登陆才能获取token值,这是加载登录页面的,也可以不加在登陆页面,先请求以下代码后将token加入在本地数据里,后面的请求就直接带上token

       http.post('/api/login/password',{password: "xxxxx",phone:"xxxxx"}).then((data)=>{
         console.log(data);
        localStorage.setItem("token",data.data.token);
       })

注意:http是我创建的axios实例对象

这是我自己创建的axios实例http是自己去的名字,你可以自己选取,不要用axios,因为会报错

const http = axios.create({
  baseURL: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  timeout: 5000,
});

然后在请求拦截器的进行对headers的加入

// 请求拦截
// 添加请求拦截器
http.interceptors.request.use(
    function (request) {
    // 在发送请求之前做些什么
    //若token存在,则在每次请求头中加入token
  const headers=request.headers;
  let token=localStorage.getItem("token");
  headers["X-YAuth-Token"]=token;

    return request;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

封装后的代码
utils/request.js


import axios from "axios";
import { Toast } from "vant";
// 创建一个单例(实例)
const http = axios.create({
  baseURL: "xxxxxxxxxxxxxxxxxxxxxx",
  timeout: 5000,
});

// 请求拦截
// 添加请求拦截器
http.interceptors.request.use(
    function (request) {
    // 在发送请求之前做些什么
    //若token存在,则在每次请求头中加入token
  const headers=request.headers;
  let token=localStorage.getItem("token");
  headers["X-YAuth-Token"]=token;

    return request;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

// 响应拦截
http.interceptors.response.use(
  (res) => {
    // this.$toast.clear();
    return res.data;
  },
  (err) => {
    return Promise.reject(err);
  }
);

export default http;

在其他页面使用时导入即可

import http from "../utils/requets"

然后使用

    http.get('这的你拼上去的路径',).then((data)=>{
        console.log(data);
      });
    },
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

碑无名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值