onAuthStateChanged如何在服务中实现并在每个页面(组件)中使用它



如何在服务中使用onAuthStateChanged来使用每个组件?

我通常在所有页面上都使用这个。但现在我想从服务中调用它,并且我不想在刷新页面时看到null。我该怎么做?

this.auth.onAuthStateChanged(user=>{
if(user){
}
else{}
})

刷新页面时,我不希望看到null。

不幸的是,这行不通。

当您重新加载页面时,Firebase需要与服务器检查用户帐户/令牌是否仍然有效,这需要一些时间。因此,当您在检查令牌之前附加侦听器时,它将立即被null调用,以表明还没有用户登录。然后,如果/当用户的重新身份验证完成时,将使用该用户的user对象再次调用回调。

没有办法改变这种行为。

如果你想能够区分:

  1. 从未有用户在此设备上登录过
  2. 用户以前已登录,我们正在重新验证他们的凭据

一个技巧是,当用户登录时,在浏览器的本地存储中存储一个小值。然后,当页面恢复时,您可以读取该值,并使用该值来确定您处理的是案例#1还是案例#2。

最新更新