流浪のwolf

卷帝

导航

使用 vuex 和 本地存储实现永久性token存在 并且在请求拦截统一添加headers token 避免重复代码

在 vuex 仓库中设置state的token值:从本地中取值:

登录的时候调用唯一可以修改state数据的mutations方法设置token ;

export default new Vuex.Store({
  state: {
    // 分类
    // allCate: [],
    user: getItem("USERTOKEN"),
  },
  getters: {},
  mutations: {
    setUserToken(state, data) {
      state.user = data;
      // 如果是简单数据不需要序列化 因此封装一个函数
      //   localStorage.setItem("USERTOKEN", JSON.stringify(data));
      setItem("USERTOKEN", data);
    },
  },
  //   在action中发起 axios?
  actions: {},
  modules: {},
});

在请求拦截器中判断是否存在token 有的话就给所有的请求携带token,

ps:有的接口不需要tokne参数,也可以添加tokne,因为服务器只会去验证自己需要的参数,其余的参数不会管;

// 添加请求拦截器
request.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // console.log(config, "======请求拦截器=========");
    // config 就是接口相关配置 eg headers data等
    // 如果有token就把tokne加入请求参数
    const { user } = store.state;
    // console.log(user);
    if (user && user.token) {
      //   console.log(111);
      config.headers.Authorization = `Bearer ${user.token}`;
    }
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);

posted on 2022-10-11 08:53  流浪のwolf  阅读(42)  评论(0编辑  收藏  举报