注册用户时Firebase Auth问题,注册时自动登录?

时间:2021-07-08 06:03:57

标签: firebase firebase-authentication

当我使用FB Auth提供的功能注册新用户时出现问题。

当我注册一个新用户时,它会触发观察者 onAuthStateChanged,我认为它只会在用户登录时触发。

//user register
btnReg.addEventListener('click', e => {
    e.preventDefault();
    console.log('creating account');
    auth.
        createUserWithEmailAndPassword(regmail.value,regpass.value)
            .then(userCredential => {
                regform.reset();
                console.log('successfully registered');
            })
});

//user login
btnLogin.addEventListener('click', e => {
    e.preventDefault();
    console.log('trying to sign in');
    auth.
    signInWithEmailAndPassword(logmail.value,logpassw.value)
    .then(userCredential => {
        console.log('logged in');
        signout.style.display = 'block';
        logform.reset();
    })
});


//check user state
auth.onAuthStateChanged(user => {
    if (user) {
        console.log('auth: logged in');
        signout.style.display = 'block';
        wheader.appendChild(signout)
    }
});

1 个答案:

答案 0 :(得分:0)

Firebase 身份验证就是这样工作的。如果您不希望出现这种行为,您可以在登录后立即注销用户。

const authListener = auth.onAuthStateChanged(user => {
    if (user) {
        console.log('auth: logged in');
        signout.style.display = 'block';
        wheader.appendChild(signout)
    }
});

//When user clicks register, 
authListener()

auth.signInWithEmailAndPassword(logmail.value,logpassw.value).then(userCredential => {
  auth.signOut().then(() => {
    // redirect somewhere
  })
})

您可能不希望在此期间触发 authStateChanged 侦听器,因此当用户单击注册按钮时,禁用 auth 侦听器,如上所示。

其他方式是在云函数或您的服务器中使用 Firebase Admin SDK 创建用户帐户。您可以在文档中阅读有关[创建新用户]https://firebase.google.com/docs/auth/admin/manage-users#create_a_user() 的更多信息。但如果立即注销对您有用,那么就不需要云功能。