Firebase存储规则customMetadata无法正常工作

时间:2018-01-23 12:36:52

标签: firebase firebase-storage firebase-security

我制定了一些规则来仅为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()

没有任何作用。

1 个答案:

答案 0 :(得分:2)

您应该使用:

allow read: if request.auth.uid in resource.metadata.keys();

我发现您已经多次尝试request.resource了。只有在写入Firebase存储时才能访问此变量。阅读时,您必须直接使用resource