我有用于登录用户的标准脚本。我也想在成功登录时添加重定向,但是以当前形式,即使有错误,它也会重定向。如何重新制作脚本,使其仅在没有错误的情况下起作用?
function login(){
const userLogin = document.getElementById('loginEmail').value;
const userPassword = document.getElementById('loginPassword').value;
firebase.auth().signInWithEmailAndPassword(userLogin, userPassword).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
window.alert("Error" + errorMessage);
});
window.location.replace('home.html');
}
答案 0 :(得分:2)
使用then()
就像其他承诺一样。
firebase.auth().signInWithEmailAndPassword(userLogin, userPassword)
.then(function(user) {
// do stuff here when sign in succeeds
})
.catch(function(error) {
// Handle Errors here.
});
答案 1 :(得分:1)
Doug的答案仅在用户主动登录时有效。当用户重新加载页面时,将恢复其身份验证状态,但不会触发then()
回调。如果您还想在这种情况下重定向它们,则可以改用onAuthStateChanged
侦听器:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
window.location.replace('home.html');
} else {
// No user is signed in.
}
});
这还将替换Doug的答案中添加的then()
回调,但不会替换您已经拥有的catch()
块,因为这可以在用户主动登录时处理问题。