【问题标题】:How do Firestore (authentication) rules see cloud function reads/writes and trigger function reads/writes?Firestore(身份验证)规则如何查看云函数读取/写入和触发函数读取/写入?
【发布时间】:2020-04-23 01:26:36
【问题描述】:

我现在需要开始为我在 Firestore 中的数据设置规则。然而,在我的网络应用程序中,虽然我直接从 Firestore 查询数据,但我几乎从不直接向它写入数据。所有写入均通过云功能完成:

exports.post_content = functions.https.onRequest((request, response) => {
    db.collection(...)...().add(..)
        .then(...)
        .catch(...)
});

还有一些通过触发器函数写入数据的情况:

exports.on_content_write = functions.firestore.document('abc/xyz/...').onCreate(..);

我在 Firestore 规则中找到的几乎所有文档或教程都假定数据是由经过或未经过身份验证的 Web 用户写入(或读取)的。但是当通过 http 请求(例如post_content)进行写入时,哪个“用户”正在检查 Firestore?由于 post_content 本身由客户端调用(通过 Web 或 curl 或其他方式),这些凭据是否会传递给 firestore?

函数什么时候自动触发?

【问题讨论】:

    标签: firebase google-cloud-firestore google-cloud-functions


    【解决方案1】:

    HTTP 请求没有隐含的用户。当您使用 Firebase Admin SDK(或任何适用于 Firestore 的服务器 SDK)时,您将使用可以完全控制数据库的服务帐户对其进行初始化,从而完全绕过所有安全规则。

    如果您希望在 Cloud Functions(或任何其他后端)中运行的代码中以经过身份验证的用户身份模拟写入,那么使用 Firestore 是不可能的。您可以做的最好的事情是将身份验证 ID 令牌从客户端传递给函数 verify it with the Admin SDK,并在您的代码中决定是否要允许该用户写入。在这种情况下,您将无法使用安全规则。

    【讨论】:

      猜你喜欢
      • 2020-03-01
      • 2021-12-11
      • 1970-01-01
      • 2019-11-15
      • 2020-11-21
      • 2016-11-07
      • 2018-01-08
      • 1970-01-01
      • 2021-06-12
      相关资源
      最近更新 更多