我遇到了持久用户的问题。
显然,在 SDK 初始化之前auth.currentUser
将为空,所以我正在使用 authStateChanged
.
如果用户未登录,我想将他们重定向到登录页面,所以我订阅了身份验证状态,只是为了检查我们是否有用户,这应该在主应用程序组件中完成,以确保没有用户可以在没有auth
的情况下访问任何内容。
然后是注册页面。由于 stateChange 有一个侦听器,一旦用户登录,该侦听器就会在应用程序组件中触发,并开始执行非预期的事情,而我们仍然想在注册页面上做其他事情。
有没有记录的方法,使用Firebase auth.currentUser,订阅它,并从那里获取用户,只需一次,如果没有用户,则为空。
推荐的方法是仅根据onAuthStateChange
、已解决和用户存在与否设置用户的状态,然后通知您的主进程状态更改。
或
如记录在案的 https://firebase.google.com/docs/reference/js/firebase.auth.Auth#onAuthStateChanged
返回non-null function(( 观察者的取消订阅函数。
这意味着您可以执行以下操作:
const unsub = firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
}
});
然后,每当您想取消订阅时:
unsub()