【问题标题】:Firebase Firestore only allow user to query a collection if there is a filterFirebase Firestore 仅允许用户在有过滤器的情况下查询集合
【发布时间】:2021-06-30 09:03:52
【问题描述】:

我正在尝试创建一个 Firestore 规则,该规则只允许用户列出他们正在过滤字段的集合中的文档。

// would fail:
db.collection('documents').get();

// would succeed:
db.collection('documents').where('fieldId', '==', 123456).get();

有没有办法通过 Firestore 规则来实现这一点?

【问题讨论】:

    标签: javascript firebase security google-cloud-firestore firebase-security


    【解决方案1】:

    我能想到的唯一方法是query based rules

    类似这样的:

    allow read: if resource.fieldId.published == 123456;
    

    但我不认为有办法只要求他们过滤fieldId,不管是什么值。

    有趣的是,这可以通过实时数据库安全规则实现的,它有一个单独的clause for query.orderByChild

    我认为这听起来像是一个合理的功能,所以我推荐你file a feature request。它现在或任何附近的功能都对您没有帮助,但是...谁知道呢。 ?

    【讨论】:

      【解决方案2】:

      我得到了它的工作

      allow list: if int(resource.data.fieldId) > 100000000000000000;
      

      因为所有 id 都超过 100000000000000000。现在尝试列出不带 .where('fieldId', '==', someId) 的集合被拒绝。

      【讨论】:

        猜你喜欢
        • 2023-03-14
        • 2021-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-21
        • 1970-01-01
        • 2018-03-22
        • 1970-01-01
        相关资源
        最近更新 更多