如何在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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论