【问题标题】:Restricting read/write to firestore based on android package name根据android包名称限制对firestore的读/写
【发布时间】:2020-05-15 21:00:20
【问题描述】:

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

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

在添加 Firestore 安全规则时,是否可以使用其他任何东西来代替包名来唯一标识应用程序?

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

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    不可能完全按照您的描述。安全规则无法确定或限制访问来源。它们只是限制 可以读取和写入由 Firebase 身份验证确定的数据。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      • 2019-09-28
      • 1970-01-01
      • 2021-12-04
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多