【问题标题】:Firebase Storage allow write to folder to multiple usersFirebase 存储允许将文件夹写入多个用户
【发布时间】:2019-11-12 11:53:12
【问题描述】:

我创建了一个应用程序,允许用户创建一个简单的照片集。所有数据都存储在 Firebase Cloud Firestore 中。图像将上传到 Firebase 存储。 收藏的所有者可以邀请任何其他用户访问他的收藏并上传照片。 Firestore 中的数据共享工作正常。但是现在我在编写存储的安全规则时遇到了问题。有谁知道,我必须如何编写规则,以便添加到集合中的任何用户也可以访问图像?每个集合的文件存储在单独的文件夹中。

【问题讨论】:

  • 到目前为止你尝试过什么?有安全规则的东西没有按您预期的方式工作吗?
  • 是的,如果我将相应的用户 ID 添加到每个文件的元数据中,它就可以工作。但是我怎样才能让用户上传新文件呢?他们没有任何可以根据安全规则进行验证的元数据。
  • 您是说要使用 Firestore 中的数据来控制对 Cloud Storage 中数据的访问?
  • 是的,我正在寻找一种允许根据 Firestore 中的数据进行读写的方法。这可能吗?我想过一个云函数,但我不确定这是否可行。

标签: firebase google-cloud-firestore firebase-storage firebase-security


【解决方案1】:

Firebase 安全规则目前无法在产品之间架起桥梁。您不能在 Cloud Storage 的安全规则中使用 Cloud Firestore 中的数据。在 Cloud Storage 的安全规则中,您唯一可以访问的内容是每个用户的 object metadata 和 Firebase 身份验证 custom claims。您必须想办法对其中任何一项进行更改以实现您的权限。

或者,您可以通过 Cloud Functions 引导所有访问,以决定用户是否应该能够访问内容,但请记住,Cloud Functions 响应最多只能为 10MB。

【讨论】:

  • 谢谢@dougstevenson,我想这就是我想要的。如何将图像上传到 Cloud Functions 或将其添加到 Functions 响应?对于所有这些问题,我很抱歉,但我是 Cloud Function 开发的新手。
【解决方案2】:

您应该考虑创建一个私有组并在私有令牌的帮助下对该组进行身份验证。

https://firebase.google.com/docs/storage/security/user-security#group_private

【讨论】:

  • 非常感谢您的快速回复。但是是否可以只为一个用户创建多个令牌?我可以使用云函数创建这些令牌吗?我在文档中找不到任何相关内容。谢谢?
  • 您可能必须从不同的服务器创建一个令牌,然后使用该令牌向 Fire Base 进行身份验证。如果您希望用户与多人共享多个文件夹,那么您应该开始研究谷歌云存储。火力基地不适用于此目的。
  • 查看创建自定义令牌的链接:firebase.google.com/docs/auth/admin/create-custom-tokens。还有其他几种方法可以做同样的事情。
猜你喜欢
  • 2021-04-27
  • 2017-03-24
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 2020-10-18
  • 2012-10-08
相关资源
最近更新 更多