我建议改用拦截器,它更灵活,在发出请求而不是创建时获取令牌。尝试类似的操作以避免未设置标记的问题。
// ~/plugins/axios
import axios from 'axios'
import AuthenticationStore from '~/store'
var api = axios.create({
baseURL: 'http://localhost:8000/api/v1/',
'headers': {'Authorization': 'JWT ' + AuthenticationStore.state.token}
})
api.interceptors.request.use(function (config) {
config.headers = {
'Authorization': AuthenticationStore.state.token ? 'Bearer ' + AuthenticationStore.state.token : ''
}
return config
}, function (error) {
// Do something with request error
return Promise.reject(error)
})
export default api
如果需要没有auth头,则需要在拦截器请求时添加If。
商店问题:
当您应该导出store实例时,您正在导出函数,
所以这是错误的:
const AuthenticationStore = () => {
您应该导出实例,以便:
const AuthenticationStore = new Vuex.Store({ ...
请访问
https://vuex.vuejs.org/guide/
以获得更好的理解。你不完全理解这一点也不错!在JS中导出模块/实例/并不容易完全理解。试着多学点。祝你好运