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

项目中使用了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
阅读 8.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题