仅当用户登录后加载页面时,基于身份验证状态的Firebase才起作用

时间:2018-10-05 00:45:00

标签: firebase firebase-authentication

我正在使用onAuthStateChange根据身份验证状态加载数据。

用户登录后,将加载newsitems。 用户注销后,将从页面中删除newsitems。

firebase.auth().onAuthStateChanged(firebaseUser => {

   if(firebaseUser){
      // update Newsitems
      firebase.database().ref('news').once('value', function(snap){
         snap.forEach(snapChild => {
             addNewsItemToHTML(snapChild.val(), snapChild.key)
         })
      })
   }
   if(!firebaseUser){
      document.getElementById('newsitems').innerHTML = '';
      document.getElementById('admin').innerHTML = '';
   }
});

如果在页面加载时用户已登录,则此方法有效。我可以注销并登录,新站点消失并适当显示。

但是,如果在页面加载时用户未登录,则我登录后将不会显示newsitems。新闻项仅在刷新页面后出现。

我已经研究了几个小时,但找不到答案。我认为,因为页面加载时没有用户,所以不会创建引用。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

  

您不是在调用onAuthStateChanged。相反,您是在告诉Firebase   验证状态更改时呼叫您,这可能会发生   页面重新加载几次。

     

加载页面时,以前有一个用户签名   在这种情况下,身份验证状态可能会更改几次,而客户端   确定用户的身份验证状态是否仍然有效。对于   因此,您可能会在看到最终结果之前看到没有用户的通话   与实际登录的用户通话。

请通过this question.

请考虑在加载页面时将firebase.auth().currentUser与条件一起使用。 firebase.auth().currentUser,除非注销,否则将为您提供当前的登录用户。