我在firestore上有一个“游戏”集合,带有“级别”子集合。我正在尝试设置安全规则,以便您只能访问您创建的游戏或级别。
所有文档(游戏或关卡)都有一个{
dogname: 'doggo',
catname: 'attack',
dogage: 51,
catage: 98,
key51: '',
key73: '',
key47: ''
}
字段,其中包含创建它们的用户的uid。我已尝试此规则,但仍然出现authorId
错误:
Missing or insufficient permissions
我错过了什么?
我也尝试了以下规则但没有成功:
service cloud.firestore {
match /databases/{database}/documents {
match /games/{document=**} {
allow read, write: if document.data.authorId == request.auth.uid;
}
}
}
service cloud.firestore {
match /databases/{database}/documents {
match /games/{game}/levels/{level} {
allow read, write: if level.data.authorId == request.auth.uid;
}
}
}
答案 0 :(得分:2)
根据参考文档,resource是包含用户尝试编写的文档数据的对象。您可以使用其data属性来保留其字段值。
service cloud.firestore {
match /databases/{database}/documents {
match /games/{document=**} {
allow read, write: if resource.data.authorId == request.auth.uid;
}
}
}
答案 1 :(得分:1)
match /databases/{database}/documents {
match /users/{uid} {
allow read, write: if request.auth.uid == uid;
}
match /data/{uid}/temperature
/{document=**}{
allow read, write: if request.auth.uid == uid;
}
match /data/{uid}/blood_pressure
/{document=**}{
allow read, write: if request.auth.uid == uid;
}
}
}
我这样做是为了仅为经过身份验证的用户访问子集合“blood_pressure”和“温度”。对我来说效果很好。