每次页面重新启动时,Firebase.auth().currentUser 都会变为 null
Posted
技术标签:
【中文标题】每次页面重新启动时,Firebase.auth().currentUser 都会变为 null【英文标题】:Firebase.auth().currentUser turns to null every time the page restarts 【发布时间】:2020-09-30 22:29:51 【问题描述】:我在 vue 应用程序中使用 firebase 身份验证 每次登录用户后重新启动页面时 currentUser 变为 null
firebase.auth().signInWithEmailAndPassword(this.email, this.password)
.then(() => this.$router.push(name: 'Home'))
.catch(err => this.feedback = err.message)
在 vue 路由器中
router.beforeEach((to, from, next) =>
if (to.matched.some(record => record.meta.requiresAuth))
let user = firebase.auth().currentUser
if (!user)
next(name: 'Login')
else next()
else next()
)
我希望用户不是每次重新启动页面时都登录一次
【问题讨论】:
【参考方案1】:这是因为 beforeEach
在 firebase 完全完成初始化之前被执行。
您可以使用onAuthStateChanged
观察者确保 vue 应用仅在 firebase 完全初始化后才被初始化。
修复它的一种方法是在 main.js(new Vue( ... )
) 中使用 onAuthStateChanged
包装 vue 初始化代码,如下所示:
let app;
...
firebase.initializeApp( ... );
firebase.auth().onAuthStateChanged(() =>
if (!app) // ignore reinitializing if already init (when signing out/login)
new Vue( ... )
...
)
【讨论】:
以上是关于每次页面重新启动时,Firebase.auth().currentUser 都会变为 null的主要内容,如果未能解决你的问题,请参考以下文章
当我更新 ListView 上的列表时,Flutter 页面不会重新加载
当我使用重新加载功能时,Firebase Auth 会注销我吗?
有时 firebase.auth().onAuthStateChanged 在我刷新页面时返回 null 用户
每次我打开应用程序时,Phonegap 应用程序都会重新启动。有啥建议可以返回同一页面吗?