我正在尝试研究如何设置Firebase安全规则,以基于经过身份验证的用户是否有权访问文档来限制读写。
我有一个帐户文档,其中包含一组用户,这些用户可以访问文档中的数据以及帐户文档集合中的其他文档。
我有以下规则设置:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /_accounts/{accountid}/activities{
allow read: if request.auth != null && get(/databases/$(database)/documents/_accounts/$(accountid)/allowedusers/$(request.auth.uid)).data.allowed == true
}
}
}
但是,当我尝试读取活动集合中的文档(通过身份验证时)时,我发现权限不足或不足。
我的测试客户端是一个Flutter应用程序:
RaisedButton(
child: Text('Test FB Rules'),
onPressed: ()async{
try {
var docs = await firestore.collection('_accounts').document('2iRBq9RlhbrjOx908IzV').collection('activities').getDocuments();
print(docs);
} catch (e) {
print(e);
}
},
)
我如何只允许读取包含文档ID为已认证用户ID且文档字段“允许”设置为true的文档?