亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

允許用戶讀取、寫入自己的文檔 Firestore

允許用戶讀取、寫入自己的文檔 Firestore

撒科打諢 2022-10-27 16:16:40
我正在嘗試設置 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;    }  }}請問我怎樣才能做到這一點
查看完整描述

2 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

這些規則應該有效:

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。


查看完整回答
反對 回復 2022-10-27
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

對于讀取操作/查詢,您需要檢查resource.data.uid而不是request.resource.data.uid. 所以:

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

這也可能適用于寫入,但我還沒有測試過。


查看完整回答
反對 回復 2022-10-27
  • 2 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號