允许用户读取、写入自己的文档 Firestore

我正在尝试设置 Firestore 安全性,以便用户可以在此处读取和写入自己的文档是我用来将数据添加到数据库的代码


data() {

  return {

    order: {

      price: null,

      amount: null,

      comment: null,

      createdAt: new Date().toString().slice(0, 25),

      uid: fb.auth().currentUser.uid

    }

  }

}


sendBuy() {

  db.collection("orders").add(this.order);

}

这是读取数据的代码


readData() {

  let uid = fb.auth().currentUser.uid;

  db.collection("orders")

    .where("uid", "==", uid)

    .get()

    .then(querySnapShot => {

      querySnapShot.forEach(doc => {

        console.log(doc.id, "=>", doc.data());

      });

    });

}

我试过的firestore规则不起作用


rules_version = '2';

service cloud.firestore {

  match /databases/{database}/documents {

    match /orders/{uid} {

      allow read, write: if request.resource.data.uid == request.auth.uid;

    }

  }

}

请问我怎样才能做到这一点


撒科打诨
浏览 76回答 2
2回答

ABOUTYOU

这些规则应该有效:allow read: if resource.data.uid == request.auth.uid; allow write: if request.resource.data.uid == request.auth.uid;要修复写入中的安全漏洞,您可以执行以下操作(保持读取相同):allow create: if request.resource.data.uid == request.auth.uid allow update, delete: if resource.data.uid == request.auth.uid && request.resource.data.uid == resource.data.uid这允许任何登录的人创建属于他们的订单。它只允许用户更新与他们的 uid 匹配的订单,并且不允许他们更改 uid。

暮色呼如

对于读取操作/查询,您需要检查resource.data.uid而不是request.resource.data.uid. 所以:allow read: if resource.data.uid == request.auth.uid;这也可能适用于写入,但我还没有测试过。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript