Как сделать ссылку на следующую страницу, если вход в Firebase успешен? - PullRequest
0 голосов
/ 03 ноября 2018

У меня проблемы с использованием Firebase Auth в веб-приложении. Я использовал его раньше в разработке мобильных приложений, но не могу освоить его с помощью веб-JavaScript.

Вот мой код:

function signIn(){
    var userEmail = document.getElementById("email_").value;
    var userPass = document.getElementById("password_").value;
    firebase.auth().signInWithEmailAndPassword(userEmail, userPass).catch(function(error) {
        var errorCode = error.code;
        var errorMessage = error.message;
        window.alert(errorCode);
    });
    var user = firebase.auth().currentUser;
    if (user) {
        console.log(user);
        window.location("home.html");
    } else {}
}
<!DOCTYPE html>
<head>
  <meta charset="utf-8"/>
  <script src="login.js"></script>
  <script src="https://www.gstatic.com/firebasejs/5.5.7/firebase-auth.js"></script>
  <script src="https://www.gstatic.com/firebasejs/5.5.7/firebase-database.js"></script>
  <link rel="stylesheet" href="../style/style.css">
  <script src="https://www.gstatic.com/firebasejs/5.5.7/firebase.js"></script>
  <script>
  var config = {
    apiKey: "AIzaSyDp_LRGOFoqZuvRTWmDLdheLy184QKMOFA",
    authDomain: "norednovember.firebaseapp.com",
    databaseURL: "https://norednovember.firebaseio.com",
    projectId: "norednovember",
    storageBucket: "norednovember.appspot.com",
    messagingSenderId: "569257202876"
  };
  firebase.initializeApp(config);
  </script>
</head>
<body>

  <div id="login_div" class="main-div">
    <p id="email">Email</p>
    <input type="email" placeholder="Email Address" id="email_"/>
    <p id="password">Password</p>
    <input type="password" placeholder="Password" id="password_"/>
    <button id="signup" onclick="signIn()">Log In</button>
  </div>
  
</body>
</html>

В данный момент происходит то, что, когда я ввожу неверный адрес электронной почты или пароль, появится всплывающее окно с уведомлением. Но когда я нажимаю «ОК» в предупреждении, оно просто автоматически перенаправляет меня на следующую страницу («home.html»).

Как я могу изменить его, чтобы он перенаправлял пользователя только после УСПЕШНОГО входа в систему?

Спасибо!

1 Ответ

0 голосов
/ 03 ноября 2018

Я могу ошибаться, но не могли бы вы проверить, существует ли ошибка, существует ли ошибка, и если нет, то войдите в систему?

    firebase.auth().signInWithEmailAndPassword(userEmail, userPass).catch(function(error) {
     if (error) {

     }
     else{
        //login
     }
   });

Я считаю, что правильный способ сделать это - сделать следующее.

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    //user exists and is logged in
    //redirect Home
  } else {
    // User is signed out.
    // redirect to login
  }
});

Если вы выполняете вышеуказанную проверку на каждой странице, но не перенаправляете в состоянии true, ваш сайт будет в основном защищен паролем. Каждый раз, когда пользователь, который не вошел в систему (или не прошел проверку подлинности), попытается получить доступ к странице, он будет перенаправлять их на вход в систему до тех пор, пока они не будут. Я использую «защищенный», потому что я не знаю, является ли это правильным способом защиты паролем сайта, но он работает на внешнем интерфейсе. Если они аутентифицированы, то ничего не меняется, и они могут видеть сайт - вы также можете безопасно вызывать любые user переменные, не будучи null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...