2

我正在学习有关Firebase身份验证和存储的网络应用程序。我的想法要求用户通过Firebase登录,然后上传图片。通过Firebase身份验证和无存储服务器的存储设置文件上传限制?

我可以看到,这可能来自Firebase身份验证和存储。不过,我想限制他们可以上传的文件数量和文件大小。

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

如果我在GitHub页面上将它作为单页应用托管,我想知道是否可以在不涉及服务器的情况下设置这些限制。或者,是否需要通过服务器代理我的上传文件,以确保我永远不会允许用户上传比我打算的更多的内容?

回答

2

您可以通过Firebase Storage's security rules限制用户可以上传的内容。

例如,这(从链接文档)是一个方法可以限制上传文件大小:

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/.*'); 
    } 
    } 
} 

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

想到的一种方法是使用固定的文件名。例如,如果你限制进行编号1..5允许的文件名,用户永远只能在存储五个文件:

match /public/{userId}/{imageId} { 
    allow write: if imageId.matches("[1-5]\.txt"); 
} 
相关问题