2

我正在使用电子邮件和密码身份验证在 angularJS 应用程序中使用 firebase。我只是将我的应用程序从 Firebase 2.x 更新到 3.x,并将 AngularFire 从 1.x 更新到 2.x。

我按照这两个文档进行迁移:

但是现在,每次刷新页面时,我都需要重新进行身份验证,就像没有持久会话一样。

我检查了firebase:authUser我过去拥有的 localStorage 密钥expirationTime(实际上它是用我的登录时间戳设置的)。

要检查用户是否已登录,我使用:$firebaseAuth().$getAuth()

编辑

这是我的问题的一个工作示例(登录名:toto@mail.fr / 密码:toto123https://plnkr.co/edit/463Hse?p=preview

有谁知道为什么这种行为?

4

1 回答 1

3

我猜您正在直接检查 currentUser 而无需等待初始身份验证状态解决。您需要添加一个观察者:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
  } else {
    // No user is signed in.
  }
});

https://firebase.google.com/docs/auth/web/manage-users

此外,身份验证状态存储在网络存储中,因此请确保您已启用该状态。(例如,状态不会在 safari 私人模式浏览中持续存在)。

于 2016-08-12T00:23:19.487 回答