在执行安全规则的同时在网站上显示Firebase存储图像?

时间:2018-04-14 14:36:29

标签: javascript html firebase google-cloud-storage firebase-storage

我们将构建Angular应用程序,将我们的Firebase数据库中的一些图像显示给用户。

从Firebase文档中我了解到这样做的方法是获取下载链接并将其用作src html标记的img

const storageRef = firebase.storage().ref()
const uid = firebase.auth().currentUser.uid
const imageRef = storageRef.child(`images/${uid}/photo.png`)
const downloadLink = imageRef.getDownloadURL()

然后将downloadLink的内容传递给src代码的img

问题是.getDownloadURL()似乎生成了不强制执行Firebase存储安全规则的公共下载链接。因此,不仅当前登录的用户(谁有权访问该图像)可以关注此链接,但任何有链接的人都可以。即使授权用户只是复制图像链接并将其发布在他们的Facebook上,他们的任何朋友都可以看到该图像。我们不希望用户能够共享图像链接 - 甚至可能存在法律问题。

这些是我们的存储安全规则:

service firebase.storage {
  match /b/XXXXXXXXX.appspot.com/o {
    match /images/{uid}/{allPaths=**} {
      allow read, write: if request.auth.uid == uid;
    }
  }
}

在网络上显示图片时,有没有办法如何使用Firebase Storage强制执行基于用户的安全规则?

0 个答案:

没有答案