【问题标题】:Firebase rules Validation failedFirebase 规则验证失败
【发布时间】:2017-04-11 18:21:00
【问题描述】:

我的用户查找如下所示:包含 [用户名] [uid]

我想让用户名只包含字符和数字。

"user_lookup": {
  ".read": "auth !== null",
  "$username": {   
    ".write": "!data.exists()",
    ".validate": " 
      newData.val().matches(/^[a-z][a-z0-9]*([._-][a-z0-9]+)*$/) &&
      newData.isString()",
      "$uid": {
        ".validate": "newData.val() == auth.uid"
      },

验证失败。如果我添加验证,无论里面是什么,它都会失败。

任何提示将不胜感激。

模拟器截图:

【问题讨论】:

标签: firebase firebase-realtime-database firebase-security


【解决方案1】:

您正在编写一个 JSON 对象:

{
    "wewe": "xxxa"
}

所以验证的两个部分都将失败:JSON 对象既不是字符串也不匹配正则表达式。

要进行验证,请编写一个与我们的正则表达式匹配的字符串值:

"xxxa"

【讨论】:

  • 无论如何它都失败了i.gyazo.com/c0391fce9467f123179e23bd9f62858f.png 我认为 Childs 无法在此处添加验证,感谢您的帮助,我会尝试另一种方法来做到这一点。像这样在 uid 和用户名之间切换:i.gyazo.com/46c48dc94d75e8c508d70cde94c575a6.png
  • 在您的第一个屏幕截图中,您仍然编写了一个复杂的 JSON 对象。这意味着 newData.val() 不是字符串,因此您不能在其上调用 length
  • 所以这意味着我无法验证用户名长度至少为 4 个字符?直到我更改为第二个屏幕截图中所示的另一种方法?
猜你喜欢
  • 2019-01-19
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多