首页 > 解决方案 > Firestore 权限规则

问题描述

有 2 个应用程序使用相同的 Firestore 数据。1.前端 2.后端

前端 使用 jquery 仅显示数据。

后端 Angular7 管理应用程序,用于为前端创建、更新、删除数据。

现在前端提示错误

错误:PERMISSION_DENIED:权限被拒绝

Firestore 规则

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

代码

var dbRef = firebase.database();
var contactsRef = dbRef.ref("Slides");

//load older conatcts as well as any newly added one...
contactsRef.on("child_added", function(snap) {
  console.log("added", snap.key(), snap.val());
  $("#contacts").append(contactHtmlFromObject(snap.val()));
});
function contactHtmlFromObject(contact) {
  console.log(contact);
  var html = "";
  html += '<li class="list-group-item contact">';
  html += "<div>";
  html += '<p class="lead">' + contact.name + "</p>";

  html += "</div>";
  html += "</li>";
  return html;
}

标签: jqueryfirebasegoogle-cloud-firestorefirebase-security

解决方案


Firebase 中有两种数据库:实时数据库Firestore

您的请求正在访问实时数据库

var dbRef = firebase.database();
var contactsRef = dbRef.ref("Slides");

但规则适用于您的Firestore数据库:

service cloud.firestore {

因此,您需要转到 Firebase 中的“数据库”部分,在标题旁边您会看到一个下拉列表。切换到实时数据库,然后选择Rules选项卡。

它应该如下所示:

{
    "Slides": {
      ".write": "auth != null",
      ".read": true,
    },
}

推荐阅读