Firebase 存储:Public 到互联网关于特定目录下的文件

Firebase Storage: Public to Internet about files under a specific directory

我想将特定目录下的所有文件发布到互联网上。

安全规则

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

按照上面的方法写好安全规则后,当我打开云存储的浏览器时:

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

我该如何解决这个问题?

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 的任何人都可以访问 image/file(如果授权用户已共享 URL).

也就是说,规则 allow read: if true; 将允许任何人获得 public(如上所示)并且他们可以访问它。


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