仅在Firebase存储上不存在资源时才允许写入

9jyewag0  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(100)

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

allow write: if !resource;

allow write: if !resource.size;

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

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

wswtfjt7

wswtfjt71#

我认为你想要这些的组合:

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
      // note that property names are case-sensitive
      allow write: if !resource || request.resource.md5Hash == resource.md5Hash;
    }
  }
}
dtcbnfnu

dtcbnfnu2#

使用resource == null代替。
这确实是从文档中缺失的,但在md5注解下的mentioned
注意:MD5哈希冲突是可能的,并且可能允许某人覆盖文件,即使存在上述规则。考虑额外的文件验证或其他规则来强制不变性(例如,allow write: if resource == null;

相关问题