我想通过存储规则和对经过身份验证的用户的自定义声明来限制对 Firebase 存储对象的访问。两个很酷的功能,都有利于扩展。
然而我的问题是:
Firebase Storage 下载链接允许公开访问,无论规则如何。
我由 getDownloadURL() 给出的下载链接是: https://firebasestorage.googleapis.com/v0/b/***myappname***.appspot.com/o/logos%2F1618740110634.png?alt=media&token=bdf6a5c5-54a2-4211-aa40-85177a38210a
我的规则是:
match /{allPaths=**} {
allow read, write: if false;
}
那么我应该使用什么链接来限制仅对经过身份验证的用户的访问以及检查我的管理员(excel 报告)文件的自定义声明?我很困惑。
已经试过直接链接,最后没有token,给定的存储位置链接。 通过公共链接,任何人都可以访问我不希望他们拥有的权限。
使用 Flutter 移动版和网页版。
答案 0 :(得分:2)
getDownloadURL()
始终返回公共 URL。拥有该文件的每个人都可以访问该文件。
存在短暂的 signed
令牌网址,但本机设备 SDK 不支持它们。
downloadURL
非常安全。如果有人没有它,没有人会得到你的文件。所以这里的魔法是不分享它,只用参考来获得你想要的东西。只有有人可以访问您的参考(根据存储规则),他才能生成 downloadURL
。
我建议您只使用这些引用在您的应用中工作,并且仅当您真的想在应用中访问文件或打开它时才获取 downloadURL
。
在 firebase 存储规则中,您可以使用 auth
和 customClaims
来定义谁可以访问文件引用。
一旦生成了 downloadURL
,firebase 存储规则就无关紧要了。可以通过该链接访问该文件。