这个firebase规则是多余的吗?何时使用write vs validate?

时间:2016-02-16 17:29:05

标签: firebase firebase-authentication

我通读了the docs,而且我不确定写规则和验证规则部分之间的区别。这个代码是多余的吗?使用其中一个或两者的任何一点?

具体来说:

  • "验证"要说"用户必须登录,并且写入的值必须是uid。
  • "写"权限说,如果值与您的uid匹配,则只能写入$ user_id部分。
{
  "rules": {
    "users": {
      ".validate": "auth != null && newData.val() === auth.uid",
      "$user_id": {
        ".write": "$user_id === auth.uid"
      }
    }
  }
}

2 个答案:

答案 0 :(得分:5)

唯一区别在于.validate不会传播给其子级。

回答你的问题,在你的例子中你可以只使用“.write”。

".write": "auth != null && $user_id === auth.uid"

答案 1 :(得分:0)

从技术上讲,可能没有(传播除外)任何差异,但在我看来存在差异。

例如,安全性是.write的主要关注点,而数据完整性是.validate的主要关注点。

例如:

考虑一下我们正在写/books/{bookKey}/name路径。

  1. 允许用户写入此路径是.write的问题。可以在此处执行用户登录等检查。
  2. 用户是否输入了正确的图书名称?是.validate的关注点。例如,名称长度应超过3个字符,必须以字符开头......
  3. P.S。 考虑到多行的this问题,最好有两个单独的方法以提高可读性。