如何在Nuxt的axios二次封装中使用store和服务端api

发布于 2022-09-07 11:57:00 字数 1412 浏览 12 评论 0

项目中使用了token验证用户,我在NuxtServerInit中写入了将用户存储在Node的Session中的token写入到Store中,也就是说,用户登录后,有三个地方存储token,Node服务器中的Session、Store和本地localStorage,现在的问题是,当用户在其他地方登录,原token失效,刷新页面后,我需要在axios的响应拦截器中对这些数据进行处理,如果返回的code是10004,则清除本地、Store和Node服务器Session中存储的token,但问题是如何在axios中访问Node服务器中的session??下面是代码

import axios from 'axios'
import { handleRequestParams, handleWebStorage } from '@/utils/utils'
import { WEBSTORAGE_TOKEN_NAME } from '@/config/config'
import state from '@/store/state'
import { apiByENV } from '@/config/config'

const Axios = axios.create({
  baseURL: apiByENV,
  timeout: 5000,
  headers: {
    "Content-Type": "application/x-www-form-urlencoded;charset=utf-8"
  }
})

// http request请求拦截器(所有请求发送都要执行的操作)
Axios.interceptors.request.use(
  config => {
    if (state.KGUser && state.KGUser.token) {
      config.headers.token = state.KGUser.token || ''
    }
    // 参数序列化
    if (config.method === 'post') {
      config.data = handleRequestParams(config.data, config.headers.token)
    }

    return config
  }, error => {
    return Promise.reject(error)
  }
)

// http response响应拦截器
Axios.interceptors.response.use(
  response => {


    // 判断返回code是否为10004,token失效状态,若是则清除Node服务器session中的token及其本地localStrage中的token
    if (response.code === '10004') {
    }
    return response
  }, error => {
    return Promise.reject(error)
  }
)

export default Axios

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文