Firebase 存储身份验证

Firebase storage authentication

我想使用已验证用户的存储规则和自定义声明来限制对 Firebase 存储对象的访问。两个很酷的功能,适合缩放。

然而我的问题是:

Firebase 存储下载 link 允许 public 访问,无论规则如何。

我的下载 link 由 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;
}

然后我应该使用什么 link 来限制对经过身份验证的用户的访问并检查我的管理员(excel 报告)文件的自定义声明?我很困惑。

已尝试直接 links,末尾没有令牌,给定的存储位置 link。 使用 public link,任何人都可以访问我不希望他们拥有。

使用 Flutter 移动端和网页端。

getDownloadURL()总是returns一个publicURL。每个拥有它的人都可以访问该文件。

有短暂的 signed 令牌 URL 但它们在本机设备 SDK 上不受支持。

downloadURL 非常安全。如果有人没有它,就没有人会看到您的文件。所以这里的神奇之处在于不要在任何地方分享它,并且只使用参考来获得你想要的东西。只有当某人有权访问您的引用(根据存储规则)时,他才能生成 downloadURL.

我建议在您的应用程序中仅使用这些引用,并且仅在您真正想要在应用程序中访问或打开文件时才获取 downloadURL

在 firebase 存储规则中,您可以使用 authcustomClaims 来定义谁可以访问文件引用。

生成 downloadURL 后,firebase 存储规则无关紧要。可以通过 link.

访问该文件