【问题标题】:How to determine firebase authentication user state on wake up?如何在唤醒时确定 Firebase 身份验证用户状态?
【发布时间】:2019-12-18 14:42:14
【问题描述】:

我有一个应用,根据用户是否登录,某些元素是动态的。像

<ion-row *ngIf="firebase.auth.currentUser !== null">
 show stuff when user is logged in
</ion-row>
<ion-row *ngIf="firebase.auth.currentUser === null">
 show stuff when user is not logged in
</ion-row>

当用户第一次从未登录到登录时它工作正常。但是当用户已经登录并刷新页面时这不起作用。我认为firebase初始化currentUser需要时间,并且在应用程序初始化后状态会发生变化。

我的问题是如何在 currentUser 正确初始化后延迟应用程序初始化?理想情况下,我想订阅完成currentUser 初始化的事件,但我没有这样的信号。当然,我可以延迟我的应用程序初始化一段时间,并希望在此期间填充 currentUser,但我认为这确实是一个糟糕的解决方案。优雅的做法是什么?

【问题讨论】:

    标签: angular firebase ionic-framework firebase-authentication


    【解决方案1】:

    Firebase 网络 API 提供 onAuthStateChanged,它添加了一个观察者来观察用户登录状态的变化。

    这使您可以将页面元素的显示推迟到加载用户之后。例如,在应用程序加载时,您可以显示一个微调器。一旦onAuthStateChanged 返回,您将关闭微调器并更新页面。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2017-12-05
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 2016-04-07
      相关资源
      最近更新 更多