我有一个firebase存储下载网址,比如
如何在没有令牌参数的情况下访问此网址?
例如,如果我在没有令牌的情况下访问上面的url,则会显示403错误,显示允许拒绝。
我的firebase存储安全规则如下:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth != null;
}
}
}
此文件位于/etc
文件中。我该怎么办?
答案 0 :(得分:6)
尝试更改规则:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read;
allow write: if request.auth != null;
}
}
}
答案 1 :(得分:2)
据我了解,您正在尝试使整个存储桶公开可用。使用Firebase访问规则可能不是最佳方法,您可能想通过Google Cloud的存储层使存储桶读取访问可用。
要做到这一点,最简单的方法之一就是使用Google Cloud Console Storage。
选择存储桶,单击该存储桶进行配置,然后打开“权限”选项卡。
由于这是由Firebase托管的存储桶,因此它将具有Google所谓的细粒度访问控制。不用担心,添加公共访问权限非常简单。
单击添加成员按钮,然后在边栏上将allUser
添加为新成员,并赋予其“存储”>“存储对象查看器”的角色。您可以在Storage Docs中看到更多详细信息。
这将使存储桶可以通过<bucketname>.storage.googleapis.com
公开查看。
如果您在Firebase中创建了与您拥有的域相匹配并在Google Search Console中验证过的额外存储桶,则可以创建一个以您的自定义域命名的存储桶,并使用指向{{ 1}},您可以在Storage Endpoints Docs上看到更多详细信息,Google Cloud的文档对此进行了比我更好的解释。希望这会有所帮助!
答案 2 :(得分:0)
如果您需要不带令牌的allow accessing only the images
规则,则必须执行以下操作:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read: if request.auth!=null || resource.contentType.matches('image/.*');
allow write: if request.auth!=null;
}
}
}