在获得用户令牌和用户电子邮件名称后,我在应用程序中使用firebase进行身份验证。
我可以访问Firestore以通过记录的用户电子邮件获取用户数据,我可以通过用户电子邮件获取用户的所有数据
我的消防站的结构:
- email_1:
+ data_1
- email_2:
+ data_2
一个大问题是,任何人都有我的源代码,他们可以使用电子邮件登录,然后对源代码中的另一封电子邮件进行硬编码并从Firestore获取数据,因此他们可以访问Firestore中的任何数据。我的问题是,如何实现隔离?
答案 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
变量包含不同的值,例如email
,email_verified
等。
您应该研究documentation,以使安全规则适应您的确切需求。强烈建议观看有关Firestore安全规则的官方视频:https://www.youtube.com/watch?v=eW5MdE3ZcAw