📌  相关文章
📜  { "rules": { ".read": true, ".write": true } } - Javascript (1)

📅  最后修改于: 2023-12-03 14:48:43.636000             🧑  作者: Mango

Firebase规则设置 - JavaScript

Firebase规则是设置Firebase数据库的读写权限的一种方式。使用规则可以确保您的数据得到安全地处理和存储,而不会被未经授权的用户或恶意用户访问或篡改。Firebase规则使用JSON格式定义,其中包括两个属性:".read"和".write"。

如何设置Firebase规则

要设置Firebase规则,您需要登录Firebase控制台,并在左侧的“实时数据库”下选择您的项目。然后,点击右上方的“规则”选项卡,您将看到类似下面这个例子的默认规则:

{
  "rules": {
    ".read": "auth !== null",
    ".write": "auth !== null"
  }
}
.read和.write属性

.read.write属性定义了您的数据库中哪些数据可以被读取和写入。默认设置是只有经过身份验证的用户才有权读取和写入数据。这意味着未经授权的用户无法读取和写入数据。

您可以使用以下两种方法指定特定的Firebase规则:

指定为布尔值

最常见的方式是使用布尔值,如下所示:

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

该规则允许任何人都可以读取,但是只有认证用户才能写入数据。

使用Function指定规则

您也可以使用基于Function的规则。这种方法允许您根据您的数据结构和应用程序的需求,更灵活地控制读写权限。以下是一个基于Function的规则示例:

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

该规则允许任何经过身份验证的用户读取数据,但是只有对应的用户才能写入数据。只有用户具有对其自己数据的写入权限。

规则的优先级

当存在多个规则时,Firebase会按照它们的优先级进行比较。规则的优先级取决于规则范围的深度,即从规则路径的根部到最深处的终止键。深度越大,则规则优先级越高。

在以下示例中,较深的规则会优先于浅的规则:

{
  "rules": {
    "posts": {
      "$postId": {
        ".read": "auth !== null",
        ".write": "$postId === auth.uid"
      }
    },
    "posts": {
      ".read": "auth !== null",
      ".write": "auth !== null"
    }
  }
}

在上面的示例中,Post的子集上存在两个规则。请注意,规则路径“posts/$postId”是较深的规则,然后是规则路径“posts”。由于第一个规则定义了更深的路径,因此优先于第二个规则。

总结

Firebase规则是保护您的数据免受未经授权的访问和篡改的一种方式。您可以使用布尔值或基于Function的方法来指定Firebase规则。在为同一路径设置多个规则时,请注意规则的优先级问题。