Google存储-仅身份验证用户,没有删除/重写

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

我有一个社交应用程序,用户可以将图像发送到Google云端存储。

所以我需要只有身份验证用户才能发送图像,并且一个用户不能删除另一用户图像或覆盖另一用户图像。

我有此规则:

service firebase.storage {
 match /b/{bucket}/o {
   match /images {
     // Cascade read to any image type at any path
     match /{allImages=**} {
       allow read;
     }

     // Allow write files to the path "images/*", subject to the constraints:
     // 1) File is less than 5MB
     // 2) Content type is an image
     // 3) Uploaded content type matches existing content type (if it exists)
     // 4) File name (stored in imageId wildcard variable) is less than 32 characters
     match /{imageId} {
       allow write: if request.resource.size < 5 * 1024 * 1024
                    && request.resource.contentType.matches('image/.*')
                    && (resource == null || request.resource.contentType == resource.contentType)
                    && imageId.size() < 32
     }
   }
 }
}

因此,我如何添加仅授权用户才能发送图像,并且发送后他们不能删除/覆盖图像的方法?

谢谢!

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

使用Google Cloud Storage,您可以在文件上定义ACL。但是此ACL需要一个Google帐户,而不是您的情况。

因此,您必须手动实施过滤器以及查看/删除/写入文件的过程。您有几种解决方案

  • 您可以为每个用户提供一个目录(/ username-at-provider-com->删除电子邮件和url格式,您将遇到问题)。
  • 仅使用一个存储桶和目录,并在文件中添加custom metadata,并带有电子邮件值。

[在两种情况下,请根据用户要执行的操作检查您的用户电子邮件。而且只有执行这些检查的后端服务帐户才能访问GCS。此后端必须过滤所有用户请求。

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