我正在尝试设置Firebase安全规则,以便仅在尚不存在具有相同名称的文件时才上传文件。理想情况下,当新文件的内容与现有文件相同时,我想支持覆盖文件。
我尝试了以下内容:
allow write: if !resource;
和
allow write: if !resource.size;
和
allow write: if request.resource.md5hash == resource.md5hash;
但似乎都没有做到这一点。他们所做的只是禁止任何上传。
答案 0 :(得分:2)
我想你想要这些的组合:
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;
}
}
}
答案 1 :(得分:0)
改为使用resource == null
。
这确实是文档中所缺少的,但是在md5注释下为mentioned:
注意:MD5哈希冲突是可能的,并且即使存在上述规则,也可能允许某人覆盖文件。考虑使用其他文件验证或其他规则来强制执行不变性(例如
allow write: if resource == null;
)