如何限制对组成员的文件访问?

时间:2016-12-11 12:59:56

标签: firebase firebase-security firebase-storage

我有一个聊天应用,用户可以在私人或群聊中发送照片。每个私人或群组聊天都有一个唯一的聊天ID:/images/<chat id>/image.jpg

如何保护对此文件的访问权限,以便只有聊天成员才能查看它们?在Firebase database我有一个结构如下的节点:/members/<chat id>/member1: true

这是否真的有必要,因为这些链接只发布到了相应的聊天记录中? 任何authed用户是否可以实际浏览Firebase storage中保存的文件?或者这是否被设计阻止了?

1 个答案:

答案 0 :(得分:2)

永恒的问题。它讨论了几个地方(Google GroupStorage DocsGithub Gist),但TL; DR是:目前,无法从另一个服务的规则中读取一个服务的数据。对于服务,您可以执行以下两项操作之一:

  • 在自定义令牌中传送群组信息
  • 在服务中的自定义元数据中传达组信息

这方面的一个例子:

// Allow reads if the group ID in your token matches the file metadata's `owner` property
// Allow writes if the group ID is in the user's custom token
match /files/{groupId}/{fileName} {
  allow read: if resource.metadata.owner == request.auth.token.groupId;
  allow write: if request.auth.token.groupId == groupId;
}