如何使Firebase Realtime数据库用户的私有节点?

时间:2019-08-26 06:02:03

标签: android firebase firebase-realtime-database firebase-security

我是Android应用程序开发人员,并且正在使用Firebase Realtime Database。我想制作一个应用程序,以便当想要使用我的应用程序的用户可以在其存储库中保存诸如文本之类的内容时。但是,当我在应用程序中保存文本时,下载我的应用程序的其他用户可以看到我唯一保存的文本。这样的Firebase实时数据库规则。但是他们没有用。请告诉我如何在实时数据库中使用私有节点。

{
  "rules": {
    "messages": {
      "$user" : {
        ".read" : "$user === auth.uid",
        ".write" : "$user === auth.uid"
      }
    }

  }
}

enter image description here

2 个答案:

答案 0 :(得分:0)

您还需要检查auth规则是否为空。如果是,则不允许任何人访问该信息。另外,您需要使用通配符,而不是静态的$uid值。因此,将其放在messages节点中。因此,当您希望人们在“消息”节点中写消息,但只有那些拥有者才能看到消息时,这是它的代码:

{
  "rules": {
    "messages": {
       "${uid}": {
         ".read": "auth.uid != null",
         ".write": "auth.uid != null && auth.uid == uid"
       }  
    }
  }
}

答案 1 :(得分:-1)

我认为以下规则可以解决问题。 auth.uid == $uid确保只有节点的所有者才具有写权限,auth != null确保只有登录到您的应用程序的用户才能从其中读取内容。

{
  "rules": {
    "messages": {
      "$uid" : {
        ".read" : "auth != null",
        ".write" : "auth.uid == $uid"
      }
    }
  }
}
如果情况变得更加复杂,

This也可能对您有用。