需要更好的Firebase实时数据库规则吗

需要更好的Firebase实时数据库规则吗,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,[Firebase]客户端访问您的实时数据库'-------------' 7天前到期 您选择在测试模式下开始开发,这使您的实时 数据库实例完全向Internet开放。因为这个选择 使您的应用易受攻击者攻击,数据库安全规则 已配置为在前30天后停止允许请求。 从7天前开始,所有客户端请求都将发送到您的实时数据库 实例已被拒绝,并将继续被拒绝,直到 安全规则已更新。每天进行分析;如果你修改了 您的规则在过去24小时内的更改可能不会被考虑在内 因为 我仍在开发我的应用程序,这封电子邮件出现了…你能建

[Firebase]客户端访问您的实时数据库'-------------' 7天前到期

您选择在测试模式下开始开发,这使您的实时 数据库实例完全向Internet开放。因为这个选择 使您的应用易受攻击者攻击,数据库安全规则 已配置为在前30天后停止允许请求。 从7天前开始,所有客户端请求都将发送到您的实时数据库 实例已被拒绝,并将继续被拒绝,直到 安全规则已更新。每天进行分析;如果你修改了 您的规则在过去24小时内的更改可能不会被考虑在内 因为


我仍在开发我的应用程序,这封电子邮件出现了…你能建议一个更好的规则吗..我的应用程序包含用户登录、注册和重置名称、密码、电子邮件..

如果你想让任何人能够读取你的数据库,但只有登录的用户才能写入,你可以使用以下方法:

{
  "rules": {
    ".read": true,
    ".write": "$user_id === auth.uid"
  }
}
{
  "rules": {
    ".read": true,
    ".write": false
  }
}
其中$user_id来自您的用户json。此变量不需要称为$user\u id。它可以是用户json中的任何变量。例:

"users" : 
    {
        "user_id":
        {
            "name":"John Doe",
            "email":"email@example.com",
        }
    } 
如果希望数据库为只读,可以使用以下方法:

{
  "rules": {
    ".read": true,
    ".write": "$user_id === auth.uid"
  }
}
{
  "rules": {
    ".read": true,
    ".write": false
  }
}

你可以在

扔骨头给我们-你希望规则做什么?什么是“好”规则?是否可以使用第一个规则,以便用户无法登录并注册第4行未知变量这些规则仅适用于数据库。注册/登录在Auth中进行,而不是在实时数据库中。它的作用是检查用户是否有日志,然后允许他们更改任何内容。我建议更新答案,因为此
$user\u id
未定义且无法按原样工作。我知道您正在尝试,但此答案中显示的规则不正确。您不能让$user_id表示某个内容而不指定它是什么-它是通配符,必须表示已定义的节点。例如,如果结构是
/users/some\u uid/some\u child
,则规则必须是
规则/users/$uid
,然后可以在规则中使用$uid作为通配符。看见