我有以下Firestore规则:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read: if true;
}
match /institutions/{institution}/watches/{watch} {
allow read, update, delete: if request.auth.email == resource.data.email;
allow create: if request.auth.email != null;
}
}
}
基本上,我喜欢这样,当且仅当文档上的电子邮件与用户的电子邮件相同时,才会读取/更新/删除/institutions/{institution}/watches
下的任何文档。但是,当我使用示例文档在模拟器中运行时,我无法使访问控制工作,并且我在API客户端上也收到了权限被拒绝错误。
有没有办法进一步调试/我的上述规则中缺少什么?
答案 0 :(得分:1)
我认为request.auth.email
应该是request.auth.token.email
。参见https://firebase.google.com/docs/reference/rules/rules.firestore.Request#auth。