Firebase实时数据库规则粒度



我从文档中知道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()"
}
}
}
}

在这种情况下,用户只能在!data.exists()(即,如果操作前的数据不存在)下写入RTDB,或者在!newData.exists()(即,如果操作后该记录中的新数据不存在)下删除RTDB。

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

还可以查看:https://firebase.google.com/docs/rules/rules-language?authuser=0 rule_constructs

最新更新