使用Firebase登录后页面反复刷新

时间:2019-02-26 15:05:17

标签: javascript html firebase firebase-authentication

登录后,用户重定向到的页面反复刷新。 这是JavaScript代码:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.

    window.location="comingsoon.html";
    var user = firebase.auth().currentUser;



  } else {
    // No user is signed in.


  }
});

function login(){

  var userEmail = document.getElementById("email_field").value;
  var userPass = document.getElementById("password_field").value;

  firebase.auth().signInWithEmailAndPassword(userEmail, userPass).catch(function(error) {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;

    window.alert("Error : " + errorMessage);

    // ...
  });

}

function logout(){
  firebase.auth().signOut();

}

1 个答案:

答案 0 :(得分:1)

执行代码后,您必须取消订阅事件监听功能onAuthStateChanged。为此,您可以编写:

const unsubscribeAfterAuth = firebase.auth().onAuthStateChanged(function (user) {
    if (user) {


    window.location="comingsoon.html";
    var user = firebase.auth().currentUser;


  } else {
    // No user is signed in.


  }
});
unsubscribeAfterAuth();

这样,您不会在第一个onAuthStateChanged之后获得更新,因为您的函数在第一次调用后将不会监听事件。