【发布时间】:2018-04-04 02:47:43
【问题描述】:
我正在收藏。每个文档都有一个对象 reader,它将存储可以访问文档的人的 uid。可以是一个或多个可以访问文档的用户
我正在使用 Angular Firebase
constructor(private afAuth: AngularFireAuth, private afs: AngularFirestore) {
this.afAuth.authState.subscribe(auth => {
this.users = afs.collection<User>('users', ref => ref.where('readers.' + auth.uid, '==', true)).valueChanges();
});
}
如果我使用规则允许所有阅读,我的页面将显示正确的条目
match /users/{userId=**} {
allow read, write;
}
如果我添加规则以使用 uid 进行过滤,则会收到错误缺失或权限不足。
match /users/{userId=**} {
allow read, write: if resource.data.readers[request.auth.uid] == true ||
resource.readers[request.auth.uid] == true;
}
感谢任何有关我在规则上做错了什么的帮助。 提前致谢。
【问题讨论】:
-
我认为您需要像这样在
if resource.data.readers.[request.auth.uid] == true中添加. -
那将是一个语法错误。
-
在他们使用
$(request.auth.uid)获取价值的文档中可以。试试if resource.data.readers[$(request.auth.uid)] == true -
resource.data.readers[$(request.auth.uid)]返回语法错误 梳理文档我看到它应该是resource.data.readers[(request.auth.uid)]。试过了,它也不起作用。if resource.data.readers[(request.auth.uid)] == true和if resource.data.readers[(request.auth.uid)] != null -
看起来
resource.readers[request.auth.uid] == true正在工作
标签: firebase firebase-security google-cloud-firestore