axios 令牌失效时自动注销用户

zaq34kh6  于 2022-12-12  发布在  iOS
关注(0)|答案(2)|浏览(149)

我有一个建立在vuejs上的SPA。当用户通过API登录时,令牌存储在本地存储中。
我需要一个全局解决方案,当令牌不再有效时,它将注销并提示用户。目前,我在访问私有API端点时收到“无效令牌”错误。

如何调整axios,使所有无效令牌的响应都将触发注销/提示代码?

mbzjlibv

mbzjlibv1#

下面是一个axios的简单示例,它使用一个Bearer令牌进行身份验证。

import axios from "axios";

import { useUserStore } from "@/store/userStore";

const apiClient = axios.create({
  baseURL: ""http://127.0.0.1:8001",
  headers: {},
});

apiClient.interceptors.response.use(
  (response) => response,
  async (error) => {
    const config = error?.config;

    if (error?.response?.status === 401) {
      const result = await refreshToken();

      if (result) {
        config.headers = {
        ...config.headers,
        authorization: `Bearer ${result?.token}`,
      };
    }
    return axios(config);
  }
);

const refreshToken = async () => {
  /* do stuff for refresh token */
 
  // if refresh token failed
  try {
    useUserStore().actionLogout();
  } catch (error) {
    console.log(error);
  } finally {
    loacalStorage.clear();
  }
};
rsaldnfx

rsaldnfx2#

您可以编写一个函数,在一段时间后清除本地存储并注销用户

相关问题