当前位置: 首页 > 知识库问答 >
问题:

具有动态路径的安全规则

茅和玉
2023-03-14

假设我有一个结构如下的数据库:

  • 权限
  • $uId
    • 姓名
    • $rId

    是否可以编写一条规则,说明“如果存在权限p,允许用户修改文件室,其中p.userId=auth.uid和p.roomId=$rId和p.permission='admin'”?

    据我所知,没有在每个房间下嵌套许可信息是不可能的。

共有1个答案

闻飞跃
2023-03-14

你需要改变一下你的结构。与其使用推送id来标识权限,不如使用更受控制的结构。例如:

"Permissions": {
  "roomId": {
    "userId": "role"
  }
}

现在,您可以随心所欲地保护房间:

{
  "rules": {
    "Room": {
      "$rId": {
        ".write": "root.child('Permissions').child($rId).child(auth.Id).val() == 'admin'"
      }
    }
  }
}

另外一个优点是,如果你想撤销用户的权限,你不必扫描所有的权限。

 类似资料:
  • 最近我收到了一系列Firebase通知,涉及: [Firebase]您的Cloud FiRecovery数据库有不安全的规则 我们检测到您的安全规则存在以下问题:任何用户都可以写入您的整个数据库。因为您的项目没有强大的安全规则,任何人都可以访问您的整个数据库。攻击者可以窃取、修改或删除您的数据,并会抬高您的账单` Edit2:我需要的是允许每个人都写,而不需要登录,但是只有管理员帐户应该能够从Fi

  • 给定一组非负整数和一个值和,确定给定集合中是否有和等于给定和的子集。 例如: 我实际上用这段代码解决了问题: 然而,现在我想重建所有可能的组合,形成给定的总和。 是可以从我的回忆录矩阵中做到这一点,还是我必须以不同的方式做到这一点?

  • 064. Minimum Path Sum[M] 题目 Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path. Note: You can only mov

  • 问题是我不能使用具有这些规则的查询,因为(我发现)无法根据子集合是否包含某个文档进行查询。这意味着我不能列出某个用户所属的所有组。我尝试在作为一部分的映射中列出所有用户,但我无法设置谁可以编辑文档的某些部分的权限,因此这也不起作用。 编辑:据我所知,查询必须以某种方式与规则匹配,否则权限将被拒绝。如何创建一个查询来收集某个用户所在的所有组并满足此规则。

  • 参见文档“10. Web”部分

  • 我有一个节点。我想在其中添加炫耀文档的jsAPI。客户通过JWT授权,因此我将此添加到安全中: 然后我可以将它添加到不同的路径中,告诉客户端,要做到这一点,您需要登录。 但是,如何添加更具体的安全约束呢?例如,用户只有在以该用户身份登录时才能编辑配置文件。或者,如果用户具有超级管理员状态,或者如果他是论坛的管理员,则可以编辑评论,评论将发布在 OR 上,作为创建此评论的用户进行记录。