簡體   English   中英

為什么 firebase.auth().currenUser 為空?

[英]Why is firebase.auth().currenUser null?

編輯2:

代碼:

<script>
    console.log("CURRENT USER:"+firebase.auth().currentUser);

    var inElements = document.getElementsByClassName('authIn');
    var outElements = document.getElementsByClassName('authOut');

    if (firebase.auth().currentUser == null) {

        for(var i=0; i < inElements.length; i++) { 
            inElements[i].style.display = "none";
        }
        for(var i=0; i < outElements.length; i++) { 
            outElements[i].style.display = "inline-block";
        }
    }
    else {

        for(var i=0; i < inElements.length; i++) { 
            inElements[i].style.display = "inline-block";
        }
        for(var i=0; i < outElements.length; i++) { 
            outElements[i].style.display = "none";
        }
    }
</script>

情況:

我登錄, firebase.auth().currentUser 為空。


題:

為什么以及如何修復它?


登錄代碼:

<script>


            firebase.auth().signInWithEmailAndPassword(email, password ).then( authData => {
             //A LOT OF CODE FOR DIFFERENT SITUATIONS


            },function(error) { 

                var errorCode = error.code;
                var errorMessage = error.message;
                localStorage.setItem('error_msg_local', "Unknown user or password");
                window.location.href="/users/login";
                console.log("Login Failed: ", error);

            });


</script>

在登錄代碼中,我根據身份驗證的方式顯示不同類型的錯誤消息。 還有一些代碼來管理已驗證和未驗證的帳戶。

您需要設置authdata變量,以便它反映用戶是否已登錄。

您可以在初始化時運行此代碼,它會在 firebase Auth 對象上創建一個觀察者。 authdata發生注銷/登錄更改時, authdata變量都會相應地更新..

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    authdata = user;
  }
  else {
   authdata = null;
  }
});

或者,如果由於某種原因你不想要觀察者方法,你可以簡單地設置你的authdata像這樣:

authdata = firebase.auth().currentUser;

如果用戶未登錄 authdata 將設置為 null 並且您的ejs應相應更新..

我假設您的ejs正在客戶端上運行。 如果不是,那么您的ejs模板將不會接受這些更改。

您需要加載ejs腳本客戶端並從那里運行您的模板。

請參閱: EJS 客戶端支持以供參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM