设置通过Firebase身份验证和存储上传文件的限制(中间没有服务器)?

xrd*_*xrd 2 javascript firebase firebase-security firebase-authentication firebase-storage

我正在学习有关Web应用程序中Firebase身份验证和存储的信息。我的想法是要求用户通过Firebase登录,然后上传图片。

我可以从Firebase身份验证和存储中看到这一点。但是,我想限制它们可以上传的文件数和文件大小。

是否可以在Firebase控制台(或其他位置)中控制上传?看完JavaScript示例之后,我了解了如何放入文件,并且可以想象编写代码来查询Firebase以获取用户的上传数量,然后限制客户端,但是,这当然是一种完全不安全的方法。

如果我将其作为单个页面应用程序托管在GitHub页面上,那么我想知道是否可以在不涉及服务器的情况下设置这些限制。或者,我是否需要通过服务器代理我的上传,以确保我绝不允许用户上传超出我期望的上传数量?

Fra*_*len 5

您可以通过Firebase Storage的安全规则限制用户可以上传的内容

例如,这(来自链接的文档)是一种限制上传文件大小的方法:

service firebase.storage {
  match /b/<your-firebase-storage-bucket>/o {
    match /images/{imageId} {
      // Only allow uploads of any image file that's less than 5MB
      allow write: if request.resource.size < 5 * 1024 * 1024
                   && request.resource.contentType.matches('image/.*');
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,目前这些规则中还没有办法限制用户可以上传的文件数量。

我想到的一种方法是为此使用固定文件名。例如,如果将允许的文件名限制为1..5,则用户只能存储五个文件:

match /public/{userId}/{imageId} {
  allow write: if imageId.matches("[1-5]\.txt");
}
Run Code Online (Sandbox Code Playgroud)