Firebase实时数据库规则粒度

Firebase实时数据库规则粒度,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我从文档中知道Firebase的实时数据库有一组规则类型,如.write和.read 我的问题是:更具体的需求是什么? 比如,如果我不仅要授予用户可以/不可以写的权限,还要授予用户可以写来创建、写来编辑或写来删除的权限,那该怎么办? FRB规则能否区分不同类型,以便我对其进行管理?是的,您可以这样做。在实时数据库中,您可以使用.validate规则确定是否允许操作。因此,如果您希望允许用户写入,但仅允许删除(例如),您可以执行以下操作: { "rules": {

我从文档中知道Firebase的实时数据库有一组规则类型,如.write.read

我的问题是:更具体的需求是什么? 比如,如果我不仅要授予用户可以/不可以写的权限,还要授予用户可以写来创建、写来编辑或写来删除的权限,那该怎么办?
FRB规则能否区分不同类型,以便我对其进行管理?

是的,您可以这样做。在实时数据库中,您可以使用
.validate
规则确定是否允许操作。因此,如果您希望允许用户写入,但仅允许删除(例如),您可以执行以下操作:

{
  "rules": {
    "posts": {
      "$postId": {
        // Anyone can read
        ".read": true,
        // Some write condition
        ".write": ...,
        // User can only write to create or delete, not edit
        ".validate": "!data.exists() || !newData.exists()"
      }
    }
  }
}
在这种情况下,用户只能在
的情况下写入RTDB!data.exists()
-即,如果操作运行前的数据不存在,或者如果
,则创建新数据!newData.exists()
-即,如果操作后此记录中的新数据不再存在,则删除

您可以将这些规则结合起来,对数据和访问进行细粒度的控制。如果您需要更多的访问控制,而不是使用RTDB安全规则,那么您可以使用RTDB规则和创建云函数锁定数据,以使用服务器端逻辑和处理访问和修改RTDB

另外,请查看:
是的,你可以这样做。在实时数据库中,您可以使用
.validate
规则确定是否允许操作。因此,如果您希望允许用户写入,但仅允许删除(例如),您可以执行以下操作:

{
  "rules": {
    "posts": {
      "$postId": {
        // Anyone can read
        ".read": true,
        // Some write condition
        ".write": ...,
        // User can only write to create or delete, not edit
        ".validate": "!data.exists() || !newData.exists()"
      }
    }
  }
}
在这种情况下,用户只能在
的情况下写入RTDB!data.exists()
-即,如果操作运行前的数据不存在,或者如果
,则创建新数据!newData.exists()
-即,如果操作后此记录中的新数据不再存在,则删除

您可以将这些规则结合起来,对数据和访问进行细粒度的控制。如果您需要更多的访问控制,而不是使用RTDB安全规则,那么您可以使用RTDB规则和创建云函数锁定数据,以使用服务器端逻辑和处理访问和修改RTDB

另外,请查看:

请在firebase数据库的文档中阅读。如果它在那里,那么我们可以使用它,否则,没有人可以帮助。Firebase文档是我一生中见过的最简单的文档。请在Firebase数据库的文档中阅读它们。如果它在那里,那么我们可以使用它,否则,没有人可以帮助。Firebase文档是我一生中见过的最简单的文档。