0

我的开发站点运行良好,“允许读取:如果为真”。在生产中,我进行了以下更改,这些更改应该允许对公共收藏进行读取访问。我能够下载数据并且我的前端正确呈现,但我在控制台中收到权限错误。

我使用 flamelink 作为 cms,它确实在某些字段中放置了引用。我是否也需要对所有引用的集合具有读取权限?

service cloud.firestore {
  match /databases/{database}/documents {
    match /fl_content/{document} {
      allow read: if true
    }
    match /fl_files/{document} {
      allow read: if true
    }
    match /fl_navigation/{document} {
      allow read: if true
    }
    match /{document=**} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

我正在使用这种 Vue 方法接收数据。数据已收到,我可以访问它。

firestore: {
        pageContent: firestore
            .collection("fl_content")
            .where("_fl_meta_.schema", "==", "aboutPage")
            .limit(1),
    },

但是控制台显示错误

快照侦听器中未捕获的错误:FirebaseError:缺少权限或权限不足。

有什么帮助吗?

4

1 回答 1

0

好的,所以...首先,我认为您不需要对数据库进行匿名访问,即:如果为真。最后的声明:

  match /{document=**} {
        allow read, write: if request.auth.uid != null;
    }

为经过身份验证的用户授予对所有数据库的读取权限,这应该足够了。规则是自上而下匹配的,因此您看到的错误可能是因为您读取了相关集合,但其中的引用指向另一个集合,此时没有权限,但是,当您到达最后一条语句时,将授予这些权限,因此您正在获取数据。

于 2021-04-27T13:14:36.220 回答