正在阅读一些文章以了解规则& Firebase中的权限,然后遇到write
操作的条件:
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid"
}
}
}
}
我理解$uid
代表用户推送ID,它适用于为Users
节点生成的所有动态ID。
然后看到这个规则是:
{
"rules": {
"articles": {
"$article": {
"title": {
".write": "auth != null",
".validate": "newData.isString() && newData.val() != ''"
}
}
}
}
}
如果$article
代表articles
节点的推送ID,那么users
节点的推送ID也应该是$user
。不是吗?在配置规则时,声明推送ID的标准命名约定是什么,以便Firebase正确解析/理解它们。
最后,auth.uid
代表什么?
答案 0 :(得分:3)
让我们从auth.uid开始,这代表经过身份验证的用户的uid。 接下来是$ user和$ article,这些通配符路径因此它们可以是任何东西,而不仅仅是推送id。查看the docs了解详情。
在您的第一个示例中,$ uid是用户ID的通配符。使用写入规则,您可以检查经过身份验证的用户是否只能写入自己的位置,因此它将是这样的(为了清晰起见,使用名称而不是uid')
{{1}}
至于通配符路径的命名,据我所知,没有惯例。我个人使用描述性名称,所以我知道它是什么。当使用用户uid作为路径时,总是$ uid,对于其余的东西,比如对象id的$ objectID。 (这些可以是推送生成或自制的东西)
对于其他人,我建议您花一些时间阅读所有docs about security rules。