如何在 Firestore 数据库中实现仅限内容所有者访问?

问题描述 投票:0回答:1

我试图将文档 CRUD 操作限制为仅文档创建者。创建文档(=笔记)时,它们根据当前用户从 auth 获取用户 ID,以便正常工作。我尝试像这样设置 firestore 规则:

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    match /notes/{document=**} {
      allow read, write: if request.auth != null && request.auth.uid == resource.data.userid;
    }
  }
}

但我收到错误:权限缺失或不足。

我也尝试过没有

&& request.auth.uid == resource.data.userid;
的规则,然后它就可以工作了,但显然为所有经过身份验证的用户提供了 CRUD 访问权限(不仅仅是内容所有者)。

这也是数据库的结构:

感谢帮助!

reactjs firebase google-cloud-firestore firebase-security
1个回答
0
投票

通过将 userQuery 添加到代码中来修复:

const userQuery = query(notesRef, where("userid", "==", userid))
const docSnap = await getDocs(userQuery);
const notesData: Note[] = docSnap.docs.map((doc) => ({
     ...(doc.data() as Note),
     id: doc.id
}));
© www.soinside.com 2019 - 2024. All rights reserved.