Firebase,文件检查,将它们公开之前



我正在构建一个用户可以上传照片和视频的网络平台,我使用firebase存储,但是我遇到了一个我无法解决的问题。

我想在将所有文件公开之前手动检查它们。

所以我的第一个想法是制作一个单独的文件夹,当管理员帐户批准文件时,他可以将其从/private/img.jpg移动到/public/img.jpg。但是由于某些原因,firebase存储没有移动文件的功能。

所以我有了一个新的想法,使用自定义元数据,阻止读取没有元数据可见性设置为"公共"的图像。但对我来说,这个解决方案似乎不是最好的……更重要的是,你不能用特定的元数据阻止列表文件,所以即使文件是私有的,每个人都可以看到文件的存在,以及它的名字,这对我来说是潜在的风险。

有谁可以帮助找到新的解决方案吗?

谢谢你:)

方法#1:你可以使用一个可调用的云函数,你可以从你的应用程序调用它:

  1. 检查正在调用的用户是否具有Admin角色(使用特定的Custom Claim);
  2. 如果用户具有正确的角色,则从private&quot文件夹"复制文件;通过使用copy()方法从谷歌云存储Node.js SDK(这是要在云功能中使用的SDK)到public一个(顺便说一句,请参阅此文件夹上的答案)。

方法# 2:

另一种完全不同的方法是利用新的云存储安全规则功能,该功能允许"构建灵活的权限来保护基于Firestore中的数据访问存储文件"。"。

有了这个功能,你就可以通过Firestore中的文档管理对文件的访问。对于Cloud Storage中的每个文件,在Firestore中创建一个文档,该文档具有与该文件相同的名称,并包含一个名为(例如)published的布尔字段。默认情况下,它是false,如果Admin批准了该文件,则将其更改为true

安全规则将沿着以下行(未经测试):

service firebase.storage {
match /b/{bucket}/o {
match /.../{fileId} {
allow read: if 
firestore.get(/databases/(default)/documents/files/$(fileId)).published
}
}
}

不要忘记为Firestore集合声明正确的安全规则,这样只有Admin用户才能批准文件。

相关内容

  • 没有找到相关文章

最新更新