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

标签 firebase firebase-security firebase-storage

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

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

这真的有必要吗,因为链接只发布到相应的聊天中? 任何授权用户都可以实际浏览保存在 Firebase storage 中的文件吗? ?或者这是设计阻止的?

最佳答案

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

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

一个这样的例子:

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

关于firebase - 如何限制组成员对文件的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41086446/

相关文章:

ios - 显示应用程序下载页面 Firebase 动态链接

android - Firebase 测试实验室的测试运行失败

firebase - 变量值的 Firestore 安全规则日志记录

Firebase 规则 : is it possible to communicate between security rules of different products

reactjs - 如何在 React.js 中将图像上传到 Firebase 存储并同时将 URL 上传到 Firestore?

android - 忽略 Firebase 存储安全读取规则

android - Firebase 多播云消息传递

Firebase 分析不会提供超过 30 分钟的数据

android - 身份验证后读取数据时 Firebase 权限被拒绝

javascript - firebase 的调整大小扩展完成后获取下载网址