首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Firebase安全-共享数据

Firebase安全-共享数据
EN

Stack Overflow用户
提问于 2017-03-08 00:05:49
回答 2查看 108关注 0票数 1

我对Firebase安全感到困惑。这就是为什么。

例如,我有以下数据库:

代码语言:javascript
复制
clients: {
    $key: {
        //client data
    }
}

trainer: {
    $key: {
        //trainer data
    }
}

我需要一个客户能够看到自己的信息。我需要一个培训师能够看到所有客户的信息,但不是其他培训师。

这样客户端A、B和C就可以看到他们的个人隐私数据了。但是培训师A只能看到客户A和B的详细信息(他不培训C)。

我遇到的问题是,例如,您似乎不能请求所有客户端,而只返回使用安全规则签出的客户端。正如文档所述,如果列表中的一个返回false,那么整个簇都会返回。

如何创建正确的结构和安全规则?

EN

回答 2

Stack Overflow用户

发布于 2017-03-08 01:30:37

类似于Firebase文档(https://firebase.google.com/docs/database/security/user-security)中的示例,这可能适用于您。

我认为至少你的结构可以从客户和培训师之间的直接关键联系中受益。就像这样

代码语言:javascript
复制
clients: {
   clientA: {
       trainerKey: "trainerA"
   }
}

trainers: {
   trainerA: {
      clients: { clientA: true, clientB: true }
   }
}

安全规则-编辑以包括用户

代码语言:javascript
复制
"clients": {
    ".read": "auth !== null && (root.child('trainers/' + $trainerKey + '/clients').child($uid).exists() || auth.uid == $uid")
}

这a)检查用户是否被认证,以及b)查看客户端是否在训练者的客户端列表中,或者这是否是客户端。

这是未经测试的,但希望能让你达到你想要的目标。我还假设您的客户端ID与其身份验证ID相同。

票数 0
EN

Stack Overflow用户

发布于 2017-03-08 12:31:51

你应该隐含一些东西,比如将客户添加到trainer中作为朋友。创建一个与之共享的节点,其中包含训练者作为子节点,而训练者将包含A&B客户端密钥及其数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42652911

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档