Android 在Firebase RealtimeDatabase上使用哪些规则允许用户注册和登录?

Android 在Firebase RealtimeDatabase上使用哪些规则允许用户注册和登录?,android,json,firebase,firebase-realtime-database,Android,Json,Firebase,Firebase Realtime Database,为了让Android用户通过我的应用程序注册和登录,我已经将.read和.write设置为true。我的问题是,任何人都可以访问用户的JSON文件,因为它是公开的。如何仅通过应用程序和Firebase控制台限制对数据库的访问?规则如下: { "rules": { ".read": true, ".write": true } } 使用以下规则: { "rules": { ".read": "auth != null",

为了让Android用户通过我的应用程序注册和登录,我已经将.read.write设置为true。我的问题是,任何人都可以访问用户的JSON文件,因为它是公开的。如何仅通过应用程序和Firebase控制台限制对数据库的访问?规则如下:

{
    "rules": {
        ".read": true,
        ".write": true
    }
}

使用以下规则:

{
  "rules": {
      ".read": "auth != null",
      ".write": "auth != null"
  }
}
您将仅向经过身份验证的用户授予
读取
写入
访问权限。有关更多信息,请参阅有关的官方文档

根据您的评论,然后您应该验证执行操作的用户是否实际上是经过身份验证的用户。例如,假设您只希望经过身份验证的用户能够访问其帐户,则需要以下规则:

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

这取决于项目的工作方式,如果您希望所有经过身份验证的用户都可以读取所有用户的数据,但不能写入其他用户的数据库,则这必须是规则。当前用户只能写入自己的数据库

{
  "rules": {
   "users" : {
     ".read" : "auth != null",
       "$user_id" : {
     ".write" : "auth != null && $user_id === auth.uid"
      }
    },
  }
}
下面的规则用于:读写您自己的数据库(除了currentUser之外,没有人可以读写)


如果我使用这些规则,我会收到这样一条消息:“您的安全规则不安全。任何经过身份验证的用户都可以窃取、修改或删除您数据库中的数据。”在这种情况下,您应该像我更新的答案中一样明确地实现和使用这些规则。对不起,我的错误在于重复的If。@AndréKool从Firestore选项卡复制并粘贴它。刚刚更新了我的答案。感谢您的更正。如果您对此规则有问题,请尝试删除“用户”部分。它帮助了我。
{
  "rules": {
   "users" : {
     "$user_id" : {
        ".read" : "auth != null && $user_id === auth.uid",
        ".write" : "auth != null && $user_id === auth.uid"
      }
    },
  }
}