我正在利用Firebase身份验证在我的网站上建立注册功能,该功能只能由管理员用户访问,以便并非每个人都可以简单地注册一个帐户。
我现在面临的问题是,注册一个帐户后,代码将使它注册,以便注册的帐户将自动登录,从而覆盖当前登录的管理员帐户。
因此,我正在尝试这样做,以便在注册后,代码不会自动登录用户。
对此表示感谢!
const auth = firebase.auth();
//sign up
const signupForm = document.querySelector('#signup-form');
signupForm.addEventListener('submit', (e)=> {
e.preventDefault();
//get user info from form
const email = signupForm['signup-email'].value + "@sbe.com";
const password = signupForm['signup-password'].value;
// sign up the user
auth.createUserWithEmailAndPassword(email, password).then(cred => {
return db.collection('users').doc(cred.user.uid).set({
nric: signupForm['signup-nric'].value,
rank: signupForm['signup-rank'].value,
name: signupForm['signup-name'].value
});
}).then(() => {
//const modal = document.querySelector('#modal-signup');
//M.Modal.getInstance(modal).close();
$('#modal-signup').modal('hide')
signupForm.reset();
signupForm.querySelector('.error').innerHTML = '';
}).catch(err => {
signupForm.querySelector('.error').innerHTML = err.message;
});
});
答案 0 :(得分:1)
我正在尝试这样做,以便在注册后,代码不会自动登录用户。
那是不可能的。当您在Web客户端上调用createUserWithEmailAndPassword
时,它将始终自动登录该用户。 Web客户端SDK的设计目的是使用户可以使用自己提供的凭据来创建自己的帐户。
如果您尝试创建供其他用户使用的帐户,则不应为此使用客户端SDK。您应该改为调用您控制的后端,并使用Firebase Admin SDK至create the account。使用后端创建帐户后,它不会影响前端上当前登录的帐户。