【发布时间】:2018-05-27 15:33:35
【问题描述】:
当用户登录我的应用程序时,我正在尝试在所有请求中发送 Authorization 标头。
但是,无论我做什么,它都不起作用。
这是我的axios 实例和拦截器代码。
import axios from 'axios'
import storage from '@/services/storageService'
const user = storage.getObject('currentUser')
export const http = axios.create({
baseURL: 'http://localhost/api',
})
http.interceptors.request.use((config) => {
if(user){
console.log(user)
config.headers.Authorization = user.token
}
return config
}, (err) => {
console.log(err)
return Promise.reject(err)
})
在我的模块中,我正在像这样导入 http 实例
import { http } from '@/http'
export const getItems = () => {
return http.get('items').then( response => response.data)
}
所以,澄清一下,上面的代码有效,但我的请求中没有标头。
要让interceptor 正常工作,我需要强制重新加载页面。
谁知道如何避免这种情况?
【问题讨论】:
-
模型中的每个代码只会运行一次,即使有很多导入,所以如果(用户)在第一次运行时总是为假,你可以移动 const user = storage.getObject('currentUser')进入拦截器。
-
感谢@jacky 成功了。