4

我正在尝试设置 Firebase 安全规则,以便仅在不存在同名文件时才允许上传文件。理想情况下,当新文件的内容与现有文件相同时,我希望支持覆盖文件。

我尝试了以下方法:

allow write: if !resource;

allow write: if !resource.size;

allow write: if request.resource.md5hash == resource.md5hash;

但两者似乎都没有奏效。他们所做的只是禁止任何上传。

4

2 回答 2

3

我想你想要这些的组合:

service firebase.storage {
  match /b/<your-bucket>/o {
    match /path/to/file {
      // !resource allows the upload of a new file
      // hash comparison allows re-upload of the same file
      allow write: if !resource || request.resource.md5hash == resource.md5hash;
    }
  }
}
于 2016-06-24T15:50:53.993 回答
1

改为使用resource == null

文档中确实缺少这一点,但在 md5 注释下提到:

注意:MD5 哈希冲突是可能的,并且可能允许某人覆盖文件,即使存在上述规则。考虑额外的文件验证或其他规则来强制执行不变性(例如allow write: if resource == null;

于 2018-11-01T15:06:30.490 回答