我有一个社交应用程序,用户可以将图像发送到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
}
}
}
}
因此,我如何添加仅授权用户才能发送图像,并且发送后他们不能删除/覆盖图像的方法?
谢谢!
使用Google Cloud Storage,您可以在文件上定义ACL。但是此ACL需要一个Google帐户,而不是您的情况。
因此,您必须手动实施过滤器以及查看/删除/写入文件的过程。您有几种解决方案
[在两种情况下,请根据用户要执行的操作检查您的用户电子邮件。而且只有执行这些检查的后端服务帐户才能访问GCS。此后端必须过滤所有用户请求。