【问题标题】:FirebaseError: Missing or insufficient permissions. Read OnlyFirebaseError:权限缺失或不足。只读
【发布时间】:2021-07-20 17:49:12
【问题描述】:

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

我使用 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:缺少权限或权限不足。

有什么帮助吗?

【问题讨论】:

    标签: firebase vue.js google-cloud-firestore flamelink-cms


    【解决方案1】:

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

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

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

    【讨论】:

    • 该网站是一个公共站点(具有匿名访问权限),它通过 Firestore 生成其内容。这允许用户在连接的 CMS 中编辑网站的内容。如果我没有匿名读取访问权限,则该站点将不会呈现。经验证的读/写规则用于 CMS。说我会检查参考资料,尽管我是通过隐身方式访问该网站并且它呈现得很好。
    • 好的,尝试将所有集合添加到阅读列表中,我的意思是那些需要匿名访问的集合。
    猜你喜欢
    • 2019-10-23
    • 2022-08-06
    • 2021-12-01
    • 2022-01-15
    • 2022-01-25
    • 2021-10-31
    • 2021-11-12
    • 1970-01-01
    • 2020-07-15
    相关资源
    最近更新 更多