$ uid和auth.uid代表什么?

时间:2016-10-06 07:24:11

标签: firebase firebase-authentication firebase-security

正在阅读一些文章以了解规则& 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代表什么?

1 个答案:

答案 0 :(得分:3)

让我们从auth.uid开始,这代表经过身份验证的用户的uid。 接下来是$ user和$ article,这些通配符路径因此它们可以是任何东西,而不仅仅是推送id。查看the docs了解详情。

在您的第一个示例中,$ uid是用户ID的通配符。使用写入规则,您可以检查经过身份验证的用户是否只能写入自己的位置,因此它将是这样的(为了清晰起见,使用名称而不是uid')

{{1}}

至于通配符路径的命名,据我所知,没有惯例。我个人使用描述性名称,所以我知道它是什么。当使用用户uid作为路径时,总是$ uid,对于其余的东西,比如对象id的$ objectID。 (这些可以是推送生成或自制的东西)

对于其他人,我建议您花一些时间阅读所有docs about security rules