首页 > 解决方案 > Firebase 存储:对 Internet 公开特定目录下的文件

问题描述

我想将特定目录下的所有文件发布到 Internet。

安全规则

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /public/{allPaths=**} {
      allow read;
      allow write: if request.auth != null;
    }
  }
}

如上所述编写安全规则后,当我打开云存储的浏览器时:

在此处输入图像描述

当我输入 时Authenticated URL,您将被重定向到 Google 的登录页面。

我怎样才能解决这个问题?

标签: google-cloud-storagefirebase-storagefirebase-security

解决方案


Firebase 安全规则仅控制谁可以通过 Firebase SDK 或 REST API 获取特定对象的 URL。如果您在 Firebase 控制台中检查对象 URL,您会看到一个格式的 URL,这可能是您正在寻找的内容:

https://firebasestorage.googleapis.com/v0/b/[PROJECT].appspot.com/o/public%2Fdog.jpg?alt=media&token=fd991fdf-a33f-4321-9017-09907e1a5243

安全规则只能首先限制用户获取此 URL,但是拥有此 URL 的任何人都可以访问图像/文件(如果授权用户共享了该 URL)。

话虽如此,该规则allow read: if true;将允许任何人公开(如上图所示)并且他们可以访问它。


如果您还想要来自 GCS 的公共链接,那么您必须从 GCP 控制台编辑权限并允许allUsers读取它:

在此处输入图像描述


推荐阅读