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;
}
}
}
按照上面的方法写好安全规则后,当我打开云存储的浏览器时:
- 该目录下的文件仍设置为私有
- 如果查看每个文件的详细信息,您会发现没有 public URL 已发布。
当我输入 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
读取它:
我想将特定目录下的所有文件发布到互联网上。
安全规则
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /public/{allPaths=**} {
allow read;
allow write: if request.auth != null;
}
}
}
按照上面的方法写好安全规则后,当我打开云存储的浏览器时:
- 该目录下的文件仍设置为私有
- 如果查看每个文件的详细信息,您会发现没有 public URL 已发布。
当我输入 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
读取它: