如何防止新用户在 Firebase 上注册?

zav*_*tra 3 javascript firebase firebase-authentication google-cloud-functions

在我注册了特定用户后,有什么方法可以阻止更多用户注册 Firebase?例如,如果我只希望注册 10 个特定用户而不是更多,有没有办法关闭未来的注册?

zav*_*tra 8

经过一番挖掘,即使文档中没有正式列出此方法,我发现您可以自动删除使用 Cloud Functions 和管理 SDK 注册后创建的任何新用户。这是我在尝试注册时用于删除任何新用户的代码:

  exports.deleteNewUser = functions.auth.user().onCreate((event) => {
  const uid = event.data.uid; // The Firebase user.
  admin.auth().deleteUser(uid)
    .then(function() {
      console.log("Successfully deleted user");
    })
    .catch(function(error) {
      console.log("Error deleting user:", error);
    });
  });
Run Code Online (Sandbox Code Playgroud)

更新:Firebase 还引入了撤销令牌 API。这很重要的原因是因为当用户注册时,即使他们被立即删除,他们也会获得一个有效的令牌,该令牌至少可以保持几分钟的身份验证,如果不是更长的话。考虑使用以下方法在删除后立即撤销用户的令牌:

admin.auth().revokeRefreshTokens(uid)
  .then(() => {
    return admin.auth().getUser(uid);
})
Run Code Online (Sandbox Code Playgroud)

  • 但是不要忘记通过设置一些数据库安全规则来防止对您未授权的帐户进行读/写。 (3认同)
  • 这并不理想。使用 SDK 方法创建用户后,他们将自动登录。请参阅:https://firebase.google.com/docs/auth/web/password-auth#create_a_password-based_account。所以,我不知道上面提出的解决方案有多可靠。 (3认同)

use*_*509 6

对于截至 21 年 3 月 21 日偶然发现此帖子的任何人,Firebase 已实施一项功能,可在身份平台页面上禁用用户创建/删除。

请参考, https://github.com/firebase/firebaseui-web/issues/99#issuecomment-794537000

您现在不再需要创建 API 来处理用户身份验证,只是为了禁用用户创建/删除。