如何在 nuxt server init 中为客户端设置 axios 令牌?
How to set axios token for client side in nuxt server init?
我正在尝试在加载页面时验证我的用户。所以我有以下代码:
actions: {
nuxtServerInit ({dispatch, commit, app}, context) {
return new Promise((resolve, reject) => {
const cookies = cparse.parse(context.req.headers.cookie || '')
if (cookies.hasOwnProperty('x-access-token')) {
app.$axios.setToken(cookies['x-access-token'], 'Bearer')
api.auth.me2()
.then(result => {
commit('setUser', result.data.user)
resolve(true)
})
.catch(error => {
commit('resetUser')
resetAuthToken()
resolve(false)
})
} else {
resetAuthToken()
resolve(false)
}
})
}
但是我有以下错误:
无法读取未定义的 $axios 属性。我的代码有什么问题?
应用程序应来自上下文,例如从第二个论点。
所以你的代码应该是
context.app.$axios.setToken(cookies['x-access-token'], 'Bearer')
另一种方式。您可以在第二个参数中传递 app
,这样
nuxtServerInit ({dispatch, commit}, {app}) {
完整代码:
actions: {
nuxtServerInit ({dispatch, commit}, {app}) {
return new Promise((resolve, reject) => {
const cookies = cparse.parse(context.req.headers.cookie || '')
if (cookies.hasOwnProperty('x-access-token')) {
app.$axios.setToken(cookies['x-access-token'], 'Bearer')
api.auth.me2()
.then(result => {
commit('setUser', result.data.user)
resolve(true)
})
.catch(error => {
commit('resetUser')
resetAuthToken()
resolve(false)
})
} else {
resetAuthToken()
resolve(false)
}
})
}
}
我正在尝试在加载页面时验证我的用户。所以我有以下代码:
actions: {
nuxtServerInit ({dispatch, commit, app}, context) {
return new Promise((resolve, reject) => {
const cookies = cparse.parse(context.req.headers.cookie || '')
if (cookies.hasOwnProperty('x-access-token')) {
app.$axios.setToken(cookies['x-access-token'], 'Bearer')
api.auth.me2()
.then(result => {
commit('setUser', result.data.user)
resolve(true)
})
.catch(error => {
commit('resetUser')
resetAuthToken()
resolve(false)
})
} else {
resetAuthToken()
resolve(false)
}
})
}
但是我有以下错误: 无法读取未定义的 $axios 属性。我的代码有什么问题?
应用程序应来自上下文,例如从第二个论点。 所以你的代码应该是
context.app.$axios.setToken(cookies['x-access-token'], 'Bearer')
另一种方式。您可以在第二个参数中传递 app
,这样
nuxtServerInit ({dispatch, commit}, {app}) {
完整代码:
actions: {
nuxtServerInit ({dispatch, commit}, {app}) {
return new Promise((resolve, reject) => {
const cookies = cparse.parse(context.req.headers.cookie || '')
if (cookies.hasOwnProperty('x-access-token')) {
app.$axios.setToken(cookies['x-access-token'], 'Bearer')
api.auth.me2()
.then(result => {
commit('setUser', result.data.user)
resolve(true)
})
.catch(error => {
commit('resetUser')
resetAuthToken()
resolve(false)
})
} else {
resetAuthToken()
resolve(false)
}
})
}
}