Firebase身份验证:注册后删除自动登录

时间:2020-10-20 05:57:51

标签: firebase google-cloud-firestore firebase-authentication

我正在利用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;
  });
});

1 个答案:

答案 0 :(得分:1)

我正在尝试这样做,以便在注册后,代码不会自动登录用户。

那是不可能的。当您在Web客户端上调用createUserWithEmailAndPassword时,它将始终自动登录该用户。 Web客户端SDK的设计目的是使用户可以使用自己提供的凭据来创建自己的帐户。

如果您尝试创建供其他用户使用的帐户,则不应为此使用客户端SDK。您应该改为调用您控制的后端,并使用Firebase Admin SDKcreate the account。使用后端创建帐户后,它不会影响前端上当前登录的帐户。