如何检查文件名是否包含Firebase存储安全规则中的uid?

问题描述 投票:0回答:1

我想在我的Firebase存储中制定规则,并且我希望存储在Firebase存储中的图像文件名包含其上传程序的uid。通常用编程语言,我用.contains检查

service firebase.storage {
  match /b/{bucket}/o {

    match /eventThumbnail/{imageID} {
      allow create: if request.resource.name.contains(request.auth.uid)
    }
  }
}

此规则有效吗?我在Firebase存储安全规则文档中找不到有关使用包含的文档。实际上规则比较复杂,我仍然在搜索导致我无法创建图像的原因,并且我怀疑规则无效

firebase firebase-storage firebase-security
1个回答
0
投票

关于Cloud Storage安全规则的API文档为here。字符串类型对象的特定文档为here。您可以在文档中看到,字符串没有“包含”方法。但是,有一种使用正则表达式通过matches()验证字符串内容的方法。

但是,我认为弗兰克在他的评论中是正确的,这建议最好在文件路径中为使用其UID的每个用户使用专用前缀。例如,“ / eventThumbnail / {uid} / {file}”可用于确定在uid下组织的任何文件的权限,其中uid可以简单地验证为等于request.auth.uid(不需要子字符串或正则表达式)。这也比检查文件子字符串更安全和可靠。

© www.soinside.com 2019 - 2024. All rights reserved.