【发布时间】:2016-12-19 19:38:59
【问题描述】:
下面提供的信息直接来自 Firebase 网站。
{
"rules": {
"users": {
"$user": {
".read": "auth.uid === $user",
".write": "auth.uid === $user"
}
}
}
}
当客户端尝试访问 /users/barney 时,$user 默认 location 将匹配 $user 等于“barney”。所以 .read 规则将检查 auth.uid === 'barney'。结果,阅读 /users/barney 只有在客户端通过 “barney”的 uid。
Firebase 擅长记录,但我没有发现任何关于使用“==”或“===”的深入讨论。只要我知道它就像 JavaScript 一样工作。
根据他们的文档
如果 auth.uid === 'barney'。结果,阅读 /users/barney 只有在客户端通过 "barney" 的 uid。
有时我见过
"$user": {
".read": "auth.uid == $user",
".write": "auth.uid == $user"
}
所以我的问题是哪一种方法是正确的?当我们在规则中使用“==”和“===”时会发生什么?
【问题讨论】:
-
你的问题和the one you linked有什么不同?据我所知,那里的答案回答了你的问题。鉴于 here 它声称这些表达式是“类似 JavaScript”的,因此除非有相反的文档,
==和===的相同含义可能适用? -
我想知道 Firebase 是否对待“==”和“===”相同!
-
嗯,它说语法是“类 JavaScript”。除非他们告诉你其他事情,否则这不是告诉你
==和===做了什么吗? -
我认为它确实像 Javascript,但我无法找到它。即使他们执行“auth.uid === 'barney'”,它也会与他们的文档相矛盾。因为如果他们使用“===”,则意味着他们正在检查 auth.uid 是否也是字符串,而不是比较“auth.uid”的内容!
-
@user2884707bond "用于检查规则表达式中的两个变量是否具有相同的类型和值"
标签: javascript firebase comparison firebase-authentication firebase-security