使用Firebase身份验证和Firestore的正确方法是什么?

时间:2020-04-11 14:01:20

标签: android firebase firebase-authentication

在获得用户令牌和用户电子邮件名称后,我在应用程序中使用firebase进行身份验证。

我可以访问Firestore以通过记录的用户电子邮件获取用户数据,我可以通过用户电子邮件获取用户的所有数据

我的消防站的结构:

 - email_1:
   + data_1
 - email_2:
   + data_2

一个大问题是,任何人都有我的源代码,他们可以使用电子邮件登录,然后对源代码中的另一封电子邮件进行硬编码并从Firestore获取数据,因此他们可以访问Firestore中的任何数据。我的问题是,如何实现隔离?

1 个答案:

答案 0 :(得分:2)

由于您已经在使用Firebase身份验证,因此应该使用Firebase Authentication with Firebase Security Rules

在Firestore结构中,您应该编写一些规则,以根据用户的电子邮件(在Firebase Authentication中与该用户帐户相关联的电子邮件,如果没有记错的话,对应于该电子邮件)来限制对用户文档的访问您的结构)。

例如,如果文档位于users集合中,则可以使用以下读取访问权限保护它们:

service cloud.firestore {
  match /databases/{database}/documents {

    match /users/{userEmail} {
      allow read: if request.auth.email == userEmail;
      allow write: ....
    }
  }
}

如上面提到的doc项中所述,auth.token变量包含不同的值,例如emailemail_verified等。

您应该研究documentation,以使安全规则适应您的确切需求。强烈建议观看有关Firestore安全规则的官方视频:https://www.youtube.com/watch?v=eW5MdE3ZcAw