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

jogvjijk  于 2023-03-31  发布在  其他
关注(0)|答案(2)|浏览(111)

我有一个聊天应用程序,用户可以在私人或群聊中发送照片。每个私人或群聊都有一个唯一的聊天ID:/images/<chat id>/image.jpg
如何保护对这些文件的访问,以便只有聊天成员可以查看它们?在Firebase database中,我有一个结构如下的节点:/members/<chat id>/member1: true .
这真的有必要吗,因为链接只发布到相应的聊天中?任何授权用户都可以浏览保存在Firebase storage中的文件吗?或者这是设计上阻止的吗?

ds97pgxw

ds97pgxw1#

永恒的问题。它讨论了几个地方(谷歌集团,Storage DocsGithub Gist),但TL;DR是:目前,没有办法从一个服务的Rules中读取另一个服务的数据。对于服务,您可以做以下两件事之一:

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

举个例子:

// 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;
}
chy5wohz

chy5wohz2#

现在,您可以根据此处公布的Firebase存储安全规则访问Firebase Firestore数据库。https://firebase.blog/posts/2022/09/announcing-cross-service-security-rules

相关问题