【发布时间】:2020-09-11 03:45:20
【问题描述】:
我的应用尝试读取“站点”集合下的文档。我做了一个模拟读取操作,效果如下:
Profile/'actual profile id'/Sites/'actual site id'
这个模拟阅读可能是因为我正在阅读一个预定义的文档。我不确定。
我的安全规则如下:
match /Profile/{profile}/Sites/{site} {
allow read: if isOneOfRoles (get(/databases/$(database)/documents/Profile/$(profile)/Sites/$(site)),['FULL', 'OWNER', 'VIEW']);
}
function getRole(rsc) {return rsc.data.SHARED_WITH[request.auth.token.email];}
function isOneOfRoles(rsc, array) {return isSignedIn() && (getRole(rsc) in array);}
最后我的查询如下:
Firestore.instance.collection('Profile/${_firebaseUser.uid}/Sites')
.where('ARCHIVE',isEqualTo: false)
.orderBy('DATE',descending: true)
.getDocuments();
【问题讨论】:
-
请编辑问题以显示完整规则,包括匹配语句。您现在展示的部分规则不足以理解正在发生的事情。您还应该在数据库中显示用于决定是否允许访问的相关数据。
标签: javascript firebase google-cloud-firestore firebase-security