我正在学习Firebase安全教程。
我有这个简单的结构:
- requests
- request_id: {...}
- request_id: {...}
...
我的安全规则:
{
"rules": {
"requests": {
".indexOn": ["id_company_owner", "id_app_user"],
"$request_id": {
// only request from the last ten minutes can be read
".read": "data.child('timestamp').val() > (now - 600000)",
}
}
}
}
我现在想要的规则就是让我的请求可读。但是我已经在 $request_id 的内部(而不是外部)对此进行了处理,但没有请求是可读的;即使请求的时间戳少于 10 分钟前。有人可以解释为什么吗?
如果不查看实际数据,很难分辨,但Firebase安全规则是全有或全无的。Firebase 安全规则不会过滤数据。
也就是说,如果您尝试将侦听器附加到/requests
,并且由于安全规则而不允许读取单个项目,则无法读取它们。您需要侦听单个项目或重构数据,以完成此"筛选"行为。