Firebase存储发布规则适用于删除规则

cer*_*lex 7 firebase firebase-security firebase-storage

这是我的规则,适用于img目录:

match /img {
  match /{fileId} {
    allow read, 
          write: if request.resource.contentType.matches('image/jpeg')
                 || request.resource.contentType.matches('image/png')
                 || request.resource.contentType.matches('image/gif')
                 && request.resource.size < 2 * 1024 * 1024
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

问题是这些规则也被应用于delete(),因为它也是一个write方法,所以它总是返回一个权限错误.我在文档中找不到任何关于此的内容.如何推迟POST/PUT规则和DELETE规则?

cer*_*lex 22

我自己找到了解决方案.通过在没有资源发送(删除)时允许应用规则,它也获得写入权限.其余的创建/更新代码将发送到OR表达式.

match /img {
    match /{fileId} {
        allow read, 
        write: if request.resource == null || 
            (request.resource.contentType.matches('image/jpeg')
            || request.resource.contentType.matches('image/png')
            || request.resource.contentType.matches('image/gif')
            && request.resource.size < 2 * 1024 * 1024)
    }
}
Run Code Online (Sandbox Code Playgroud)