gpt4 book ai didi

firebase - 从 Firebase 中删除数据后,为什么不运行 .validate 安全规则?

转载 作者:行者123 更新时间:2023-12-03 00:27:32 26 4
gpt4 key购买 nike

当我从 Firebase 删除数据时,我的 .validate 规则似乎没有执行。这是错误还是故意行为?

最佳答案

一般来说,.validate 规则用于定义数据应该是什么样子(如果存在)。当数据被删除时,它们不会运行。您应该使用 .write 规则来决定是否允许写入(或删除)。

例如,考虑以下用于保护简单聊天室的规则,用户可以在其中创建新的聊天室,但只能删除他们拥有的聊天室:

{
"rules": {
".read": true,
"$room": {
".write": "auth != null && (
(!data.exists() && newData.child('owner').val() == auth.uid) ||
(!newData.exists() && data.child('owner').val() == auth.uid))",
".validate": "newData.hasChildren(['owner', 'name'])",
"name": {
".validate": "newData.val().length > 10"
},
"messages": {
".write": "auth != null"
}
}
}
}

.write 规则用于决定用户是否有权创建/删除聊天室,.validate 规则用于定义聊天室(如果存在)应该是什么样子。

如果 .validate 规则在删除时运行,您将永远无法删除聊天室(因为两个 .validate 规则都会失败)。因此决定不对删除运行 .validate 规则。

关于firebase - 从 Firebase 中删除数据后,为什么不运行 .validate 安全规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22359735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com