我有一个聊天应用,用户可以在私人或群聊中发送照片。每个私人或群组聊天都有一个唯一的聊天ID:/images/<chat id>/image.jpg
如何保护对此文件的访问权限,以便只有聊天成员才能查看它们?在Firebase database
我有一个结构如下的节点:/members/<chat id>/member1: true
。
这是否真的有必要,因为这些链接只发布到了相应的聊天记录中?
任何authed用户是否可以实际浏览Firebase storage
中保存的文件?或者这是否被设计阻止了?
答案 0 :(得分:2)
永恒的问题。它讨论了几个地方(Google Group,Storage Docs,Github 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;
}