如何在服务中使用onAuthStateChanged来使用每个组件?
我通常在所有页面上都使用这个。但现在我想从服务中调用它,并且我不想在刷新页面时看到null。我该怎么做?
this.auth.onAuthStateChanged(user=>{
if(user){
}
else{}
})
刷新页面时,我不希望看到null。
不幸的是,这行不通。
当您重新加载页面时,Firebase需要与服务器检查用户帐户/令牌是否仍然有效,这需要一些时间。因此,当您在检查令牌之前附加侦听器时,它将立即被null
调用,以表明还没有用户登录。然后,如果/当用户的重新身份验证完成时,将使用该用户的user
对象再次调用回调。
没有办法改变这种行为。
如果你想能够区分:
- 从未有用户在此设备上登录过
- 用户以前已登录,我们正在重新验证他们的凭据
一个技巧是,当用户登录时,在浏览器的本地存储中存储一个小值。然后,当页面恢复时,您可以读取该值,并使用该值来确定您处理的是案例#1还是案例#2。