Mar*_*zki 9 firebase firebase-security google-cloud-firestore
我目前正在尝试在firebase上构建小应用程序作为对它的评估.它看起来很有趣,而且效率很高,但我对firestore规则有一个问题.
我有一个集合(游戏),对象看起来像这样:
{
"name":String,
"description":String,
"owners":
{
"uid": String
"uid2": String
}
}
Run Code Online (Sandbox Code Playgroud)
规则设置如下:
service cloud.firestore {
match /databases/{database}/documents {
match /games {
match /{game} {
allow write: if request.auth != null && request.resource.data.owners[request.auth.uid] == 'ADMIN';
allow update: if request.auth != null && resource.data.owners[request.auth.uid] == 'ADMIN';
allow read: if request.auth != null && resource.data.owners[request.auth.uid] == 'ADMIN';
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
写,更新工作正常.只读适用于单个文档.当我尝试读取集合时,我得到访问错误,就像用户没有权利一样.使它不起作用的部分是
resource.data.owners[request.auth.uid] == 'ADMIN'.
Run Code Online (Sandbox Code Playgroud)
添加where("owners."+auth.uid,"==", 'ADMIN')到集合查询也没有帮助.
我在这做错了什么?对于类似的场景,firebase firestore中是否有建议的方法?
编辑:我尝试添加'get'和'list'规则,如下所示:
allow list: if request.auth != null;
allow get: if request.auth != null && resource.data.owners[request.auth.uid] == 'ADMIN';
它没有按预期工作.我希望它允许我列出文件,where但是如果有一个我不能get预期的文件"缺少权限或权限不足".我能够做的是列出所有文档,但不能直接读取其中的一些(get规则在尝试获取单个文档时有效,但在从集合中列出时不起作用).
编辑2:看起来像@MikeMcDonald我的期望是正确的,但它目前被窃听.等待修复.
编辑3:它现在正常工作,以这种方式获取和列出设置规则:
allow get, list: if request.auth != null && resource.data.owners[request.auth.uid] == 'ADMIN';
| 归档时间: |
|
| 查看次数: |
977 次 |
| 最近记录: |