Firebase身份验证,仅在有人接受后激活创建的帐户

时间:2019-11-30 11:16:33

标签: firebase firebase-authentication

我目前有一个使用Firebase身份验证作为身份验证的网站。我的问题是,我不想向所有人开放注册,只有少数应该使用该网站的人才可以开放注册。我读到有关.htaccess和.htpasswd的信息,但是由于我是在Firebase托管上托管的,所以我认为这是不可能的。

我的问题是如何确保帐户创建安全?我不想在Firebase控制台上手动创建帐户,但是让用户在页面上创建帐户。

如果在使用Firebase托管时有人在Fi​​rebase控制台上“接受”该帐户,或者在创建后添加一个额外的步骤,就可以使该帐户工作?我可以通过某种方式保护注册页面吗?

1 个答案:

答案 0 :(得分:2)

启用Firebase身份验证后,无法阻止任何用户创建帐户。但是他们可以创建帐户这一事实并不一定意味着他们可以使用您的应用程序。

您的用例的典型方法是将已批准用户的列表存储在某个位置。由于您使用的是Firebase身份验证,因此将采用UID列表的形式。

要获得授权以使用您的应用程序,需要先认证批准用户。 Firebase身份验证负责对它们进行身份验证,而后端功能应负责检查其批准状态。

例如,如果您将Cloud Firestore用作数据库,则将批准的用户UID存储在集合中:

approvedUsers <collection>
  UID1 <document>
  UID2 <document>

然后,您可以在允许用户读取(例如)任何数据之前,检查数据库的服务器端安全规则是否已授权(认证和批准)该用户。

exists(/databases/$(database)/documents/$(document.reference))
service cloud.firestore {
  match /databases/{database}/documents {

    match /myCollection/{document} {

     function isApproved() {
        return exists(/databases/$(database)/documents/approvedUsers/$(request.auth.uid))
      }

      allow read, write: if isApproved();
    }
  }
}