我在Nuxt应用程序中使用Firebase身份验证,但是我找不到能将用户登录状态持久保存在我的商店中的好方法。
我通过在商店中调度异步操作来登录用户。当用户刷新浏览器(重新加载)时,该用户将在我的应用程序中注销,但仍会在Firebase中保持登录状态(因为他们没有注销)。这是一个问题,因为用户必须再次登录我的应用程序才能查看受限制的页面并执行某些操作。
我试图通过以下方式在NuxtServerInit中抓住用户(从我使用模块模式时从index.js存储中获取):
firebase.auth().currentUser
但是它返回null,我也试着听:
firebase.auth().onAuthStateChanged((user)
但是它也返回null
我还尝试创建一个中间件来检查用户当前是否已登录,但它还会返回null。
在以前的Vue项目中,我可以在创建的main.js文件的钩子中做到这一点:
new Vue({
router,
store,
render: h => h(App),
created () {
firebase.auth().onAuthStateChanged((user) => {
if (user) {
store.dispatch('autoSignIn', user)
}
})
}
}).$mount('#app')
但是我无法在Nuxt应用程序中弄清楚该怎么做。
我非常感谢您提供解决问题的想法,让我的用户保持登录状态。