[英]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.