1 回答

TA贡献1784条经验 获得超2个赞
是的,有办法做到这一点!事实上,商店已经在您的中间件中可用。但在你的情况下,商店是空的!您需要先获取数据并填充存储。
我建议你阅读关于 nuxt 中间件的文档https://nuxtjs.org/guide/routing#middleware。它指出
中间件可以是异步的。为此,只需返回一个 Promise 或使用第二个回调参数。
所以在你的情况下,你需要在你的中间件中返回一个 Promise :这个 Promise 将是 axios 请求。这是一个提议:
export default function ({ store, redirect }) {
return new Promise(resolve => store.dispatch('signup/addUserLogin', data).then((user) => {
if (!user) {
// User not found
redirect('/login');
} else {
// Do your stuff with the user freshly got, like commit in the store
resolve();
}
})
}
在您的情况下,您应该修改操作addUserLogin:您应该只在此函数中获取 axios 查询,而不是重定向。此外,您将遇到操作中使用的数据、密码和用户的问题。刷新时,您会丢失此数据。您应该实现一个令牌系统,如 JWT,并将它们存储在本地存储或 cookie 中(如本示例中的https://nuxtjs.org/examples/auth-external-jwt/)。
添加回答
举报