在显示带有状态变量的页面之前,我尝试检查用户是否已连接。我使用中间件检查用户是否已连接,但状态变量返回错误的服务器端(在中间件中)并返回真实的客户端。
此处存储/index.js文件
export const state = () => ({
isLogged: false,
sessionKey: '',
logoutRoute: {
name: 'Logout'
}
})
export const mutations = {
setSession (state, text) {
state.sessionKey = text
state.isLogged = true
},
removeSession (state) {
state.sessionKey = ''
state.isLogged = false
}
}
export const actions = {
updatesession: ({ commit }, token) => {
commit('setSession', token)
}
}
这是我更新状态变量的方式
if (response.data.status) {
// this.$store.commit('setSession', response.data.token)
this.$store.dispatch('updatesession', response.data.token)
console.log(this.$store.state.isLogged) // output true
this.$nuxt.$router.replace({ path: '/portofolio/new' })
} else {
this.loginError = true
setTimeout(() => {
this.loginError = false
}, 5000)
}
这是我的中间件代码
export default function ({ store, redirect }) {
// Si l'utilisateur n'est pas authentifié
if (!store.state.isLogged) {
console.log(store.state.isLogged) // output false
return redirect('/login')
}
}
欢迎任何帮助或建议,谢谢。