📅  最后修改于: 2023-12-03 14:48:43.636000             🧑  作者: Mango
Firebase规则是设置Firebase数据库的读写权限的一种方式。使用规则可以确保您的数据得到安全地处理和存储,而不会被未经授权的用户或恶意用户访问或篡改。Firebase规则使用JSON格式定义,其中包括两个属性:".read"和".write"。
要设置Firebase规则,您需要登录Firebase控制台,并在左侧的“实时数据库”下选择您的项目。然后,点击右上方的“规则”选项卡,您将看到类似下面这个例子的默认规则:
{
"rules": {
".read": "auth !== null",
".write": "auth !== null"
}
}
.read
和.write
属性定义了您的数据库中哪些数据可以被读取和写入。默认设置是只有经过身份验证的用户才有权读取和写入数据。这意味着未经授权的用户无法读取和写入数据。
您可以使用以下两种方法指定特定的Firebase规则:
最常见的方式是使用布尔值,如下所示:
{
"rules": {
".read": true,
".write": false
}
}
该规则允许任何人都可以读取,但是只有认证用户才能写入数据。
您也可以使用基于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规则。在为同一路径设置多个规则时,请注意规则的优先级问题。