限制对经过身份验证的用户访问存储桶中的图像

时间:2019-05-27 16:54:49

标签: angular authorization google-cloud-storage firebase-storage

查找有关如何使用仅经过身份验证的用户才能访问的图像设置Google Cloud Storage存储桶的说明。

我们的应用程序使用Firstore和Cloud Storage。我们将图像存储在我们不希望在NET上公开显示的GCS存储桶中。 我们有设置存储规则

printenv

我们还在Firebase配置设置中配置了存储桶。 然后,我们使用存储API来获取目标路径的getDownloadURL()。 这行得通,我们能够看到图像。但是,如果我们从页面复制图像URL,然后转到另一个未登录的浏览器,则该浏览器可以下载图像。

问题:什么是配置和访问GCS存储桶的正确(最有效)方法,以便只有使用Firebase signInWithEmailAndPassword()进行身份验证的身份验证用户才能查看图像。

这是我们当前的工作(Angular和AngularFire)

allow read: if request.auth.uid != null;

如上所述,生成的路径是公共的,并且上述过程非常缓慢-图像需要很长时间才能显示在屏幕上。

我猜这不是正确的方法吗?

2 个答案:

答案 0 :(得分:0)

只有拥有URL的任何人都可以始终查看下载URL背后的内容。您无法更改此行为。如果您不希望从存储桶中提供任何未经授权的内容,请不要生成任何下载URL。您必须通过提供的客户端SDK和Firebase身份验证SDK强制所有对存储桶的访问。

答案 1 :(得分:0)

正如Doug所说,您将必须使用客户端SDK来完成此任务,根据所需的控制级别,您可以选择官方文档[1]中列出的选项之一,并仅允许经过身份验证的用户访问使用Firebase身份验证SDK [2]。

[1] https://cloud.google.com/storage/docs/access-control/

[2] https://firebase.google.com/docs/storage/security/user-security