我是Nuxt的新手,我以通用模式创建了一个项目,当页面刷新时,维护用户状态时出现问题,刷新时store和auth模块消失,因此无法从store上检索值刷新。
我尝试使用中间件从本地存储中检索数据,但是由于中间件在服务器端运行,试图在cookie中设置用户详细信息,但无法设置cookie,因此不可能。
有人可以建议一种维护页面刷新状态的最佳方法。
userLogin() {
try {
this.$axios.post('api/auth/Signin', this.login).then((res) => {
this.$auth.setToken('local', 'Bearer ' + res.data.data.token)
this.$axios.setHeader(
'Authorization',
'Bearer ' + res.data.data.token
)
this.$auth.ctx.app.$axios.setHeader(
'Authorization',
'Bearer ' + res.data.data.token
)
this.$axios.get('api/auth/User').then((res) => {
this.$auth.setUser(res.data.user)
this.$cookies.set('user', res.data.user, {
path: '/',
maxAge: 60 * 60 * 24 * 7
})
this.$router.push('/')
})
})
} catch (err) {
console.log(err)
}
}
// middleware function
export default function({ req, $auth, redirect, store }) {
// redirect to login page if the user is not authenticated
if (!$auth.isloggedIn) {
if (!process.client) {
const cookie = require('cookie')
const cookies = req.headers.cookie
const parsedCookies = cookie.parse(cookies)
const token = parsedCookies['auth._token.local']
const user = parsedCookies.user
if (!token) return redirect('/login')
else {
store.dispatch('loginStatus', true)
store.dispatch('setUser', user)
}
}
}
}