根据安卓软件包名称限制对 Firestore 的读/写



我有一个Firebase项目,其中包含3个不同的Android应用程序。这 3 个应用程序使用存储在 Cloud Firestore 下的相同数据。我的问题是,某些数据仅特定于单个应用程序,而某些文档包含应该由三个应用程序中的两个读取的数据。我需要编写 Firestore 安全规则来实现这一点。

是否可以根据 android 包名称限制对特定文档的读/写,而不必在每个请求中显式发送有关 app-id 的数据?

在添加 firestore 安全规则时,是否还有其他可用的东西来代替包名称来唯一标识应用程序?

到目前为止,我一直在尝试根据应用程序使用的身份验证类型来限制读取和写入,因为一个应用程序仅使用电话身份验证,而另一个应用程序同时使用链接在一起的电子邮件和电话。因此,如果电子邮件丢失但手机存在,我知道它来自第一个应用程序。有没有更好的方法?

这不可能完全像你描述的那样。 安全规则无法确定或限制访问来源。 它们只是限制可以读取和写入哪些数据,具体取决于 Firebase 身份验证。

可以通过request.auth.firebase.sign_in_provider或链接文档中显示的任何其他每用户属性使用已登录用户的身份验证提供程序。 您还可以在request.auth.token中使用自定义版权主张来标记用户,使其具有允许他们访问某些数据的权限,这些权限必须使用后端的 Firebase 管理员 SDK 进行设置。

最新更新