已验证用户的Firebase存储规则不起作用

时间:2018-10-26 12:21:40

标签: firebase firebase-storage

当我打开Firebase存储桶并转到文件时,我具有以下文件夹结构:

/<environment>/reports/<userId>/

我希望只允许通过身份验证的userId读取,将报告写入该用户文件夹中。

我尝试了以下操作,但是它给了我消息,拒绝访问。我究竟做错了什么?我从docs复制了几乎一对一的示例。

// Grants a user access to a node matching their user ID
service firebase.storage {
  match /b/{bucket}/o {
    // Files look like: "<ENVIRONMENT>/reports/<UID>/path/to/file.txt"
    match /production/reports/{userId}/{allPaths=**} {
      allow read, write: if request.auth.uid == userId;
    }
  }
}

1 个答案:

答案 0 :(得分:1)

您可以使用Firebase Storage Console中的规则模拟器来测试您的规则。我已经测试了您的设备,它们似乎工作正常:

storage rules

您需要记住指定诸如/production/reports/{userId}/test之类的最终节点名称,以便该规则生效,因为由于/{allPaths=**},它将匹配存储桶文件名而不是父目录。