我试图仅允许对用户UID进行读/写,但是脚本不断说缺少权限,请帮忙。
非常感谢`
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, update, delete: if request.auth.uid == userId;
allow create: if request.auth.uid == userId;
}
}
}
db.collection('users').doc(userId).collection('details').add(...
答案 0 :(得分:1)
您编写的规则仅匹配集合中直接称为“用户”的文档。但是,您正在尝试访问“用户”下文档的子集合中的文档。
documentation非常具体地解决了这种情况,因此请务必阅读并了解层次结构数据如何用于安全规则。
如果您要对集合中的 all 个文档应用按用户规则,并在 all 嵌套子集合中的 all 文档中应用该规则文档,您可以简单地说:
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read: if request.auth.uid == userId;
match /{document=**} {
allow read: if request.auth.uid == userId;
}
}
}
}
请注意,匹配项必须像这样嵌套,才能使用外部匹配项中的userId
通配符。
答案 1 :(得分:0)