我正在使用nuxtjs和Laravel Passport . 如果用户转到/ someurl,但登录方法推送到'/'如何在会话中存储/ someurl,以便我可以在登录时推送到会话变量?我有一个被调用的会话变量,但它在身份验证中间件中得到了刷新 . 我显然遗漏了一些东西 .
这是我的代码:在auth.js中间件中
导出默认函数({route,store,redirect}){let params =''
if (!route.path.startsWith('/login') && !route.path.startsWith('/assets') && route.path !== '/') {
store.state.requestUrl = route.path
}
if (!store.state.authenticated) {
return redirect('/login')
}
并登录
await this.$store.dispatch('login', {
username: this.loginDetails.username,
password: this.loginDetails.password
})
this.$router.push(this.$store.state.requestUrl) // this is always '/'
} catch (e) {
console.log(e)
this.failedLogin = true
}
1 回答
您需要使用变体更改状态(store.state.requestUrl)(存储中的
dispatch
方法 - 您已经在this.$store.dispatch('login')
中使用过它) . 所以你需要写一个改变商店状态的突变,例如 .this.$store.dispatch('set_request_url', requestUrl)
.BTW:在Nuxt中有一个用于认证的模块:) https://auth.nuxtjs.org/我建议使用它!但如果我想通过自己实现它,我会在cookie中存储重定向URL(因为它比vuex更耐用) . Nuxt有一个用于存储cookie的模块:https://www.npmjs.com/package/cookie-universal-nuxt,但您也可以使用vuejs cookies模块:https://github.com/alfhen/vue-cookie