首页 > 解决方案 > Firestore 安全规则 - 适用于 SIM 但不适用于代码(缺少检查父文档 ID 的权限)

问题描述

我的 Firestore 设置如下所示:

    match /Profile/{profile}/Sites/{site} {
       allow create : if request.auth.uid == profile;
    }

我希望仅在用户的配置文件下创建文档!所以我正在寻找这样的东西,但它不起作用,我希望上面填充配置文件 ID。

以下工作,但它不会检查该网站是否仅在该用户下创建

allow create : if exists(/databases/$(database)/documents/Profile/$(request.auth.uid));

更新:我在模拟器中的“创建”文档上尝试了以下条件,它在那里工作:

Profile/*myUIDHere*/Sites/{site}

我在模拟器上工作的安全规则是:

match /Profile/{profile}/Sites/{site} {
      allow create : if request.auth.uid == profile;
}

但是当我从手机运行代码时它不起作用 - 我丢失或权限不足错误。我正在使用的代码如下:

Firestore.instance
        .collection('Profile/${currentFirebaseUser.uid}/Sites')
        .document(site.uID)
        .setData(site.toJson())

标签: firebasefirebase-realtime-databasegoogle-cloud-firestorefirebase-security

解决方案


推荐阅读