我制定了一些规则来仅为Firebase存储中的一群人访问共享文件。
我这样做的方法是将所有uid作为键放在customMetadata中
[uid: Value]
当我评估用户是否可以读取和写入数据时,我这样做:
service firebase.storage {
match /b/{bucket}/o {
match /{accountId}/{allPaths=**} {
allow write: if request.auth.uid in request.resource.metadata.keys() && request.auth != null;
allow read: if request.auth.uid in request.metadata.keys();
}
}
}
我可以写成功,但我无法读取数据。
我尝试过各种各样的方式:
request.metadata[request.auth.uid] == 'theValue'
request.resource.metadata[request.auth.uid] == 'theValue
request.auth.uid in request.metadata
request.auth.uid in request.resource.metadata.keys()
没有任何作用。
答案 0 :(得分:2)
您应该使用:
allow read: if request.auth.uid in resource.metadata.keys();
我发现您已经多次尝试request.resource
了。只有在写入Firebase存储时才能访问此变量。阅读时,您必须直接使用resource
。