【问题标题】:firebase data validation failingfirebase 数据验证失败
【发布时间】:2015-12-06 21:04:53
【问题描述】:

第一次在新项目上使用 Firebase,当我在编写活动事件时收到一条权限被拒绝消息,其中包含验证规则。

验证规则如下:

"activity": {
".read": "auth != null",
".write": "auth != null",
".validate": "newData.hasChildren(['user'])",
".indexOn": ["when"]
}

在一个新的活动事件中,我推送一个新条目,获取令牌 ID 并使其(暂时)成为被推送数据的一部分。在调试中观看此内容(使用自定义令牌身份验证系统)时,这就是我所看到的。推送的 json 有一个“用户”条目,它是身份验证用户的 GUID,所以我不确定它为什么会失败。我隔开 json 文本。

utility.js (line 1675)
FIREBASE: Attempt to write {
"id":"-K4oomuOpaY4K2aGUYZA",
"imp":false,
"text":"xxx.",
**"user":"0648480c-xxx"**,
"when":1449363973059
} to /activity/## with auth={"uid":"0648480c-xxx","name":"Greg Merideth"}

/activity:.write: "auth != null" => true
/activity:.validate: "newData.hasChildren(['user'])" => false

FIREBASE: Validation failed. firebase.js (line 195)
FIREBASE: Write was denied firebase.js (line 195)

我什至尝试将规则更改为“.validate”:“newData.hasChild('user')”,最终结果相同。

newData 是查看入站数据包还是我的“auth”数据包?

更新(来自 cmets)

添加一个新项目会调用一个传入 fbActivity 处理程序的函数,然后该处理程序会调用:

var message = fbActivity.push({
  id: user.fn(), 
  text: t.val(), 
  imp: false, 
  user: user.uid(), 
  when: new Date().getTime()} 

推送新条目。我们没有使用 fb.timestamp,因为我们的服务器比 fb 慢了 3 秒,所以我们的时间戳很奇怪。

【问题讨论】:

  • 我在下面添加了最有可能的答案。如果不是这样,请添加用于写入数据的代码。没有它,就不可能确定出了什么问题。
  • 添加一个新项目会调用一个传入 fbActivity 处理程序的函数,该处理程序然后调用: var message = fbActivity.push({id: user.fn(), text: t.val(), imp: false, user: user.uid(), when: new Date().getTime()} 推送新条目。我们没有使用 fb.timestamp,因为我们的服务器比 fb 慢 3 秒,所以我们的时间戳出来很奇怪。

标签: validation firebase rules


【解决方案1】:

我猜你打电话给push() 是为了在activity 下添加一个新的孩子。在这种情况下,您的规则缺少push() 生成的额外级别:

"activity": {
  "$activityid": {
    ".read": "auth != null",
    ".write": "auth != null",
    ".validate": "newData.hasChildren(['user'])",
    ".indexOn": ["when"]
  }
}

如果是这种情况,请花点时间阅读Firebase security guide,它解释了这一点以及有关该语言的许多其他有用信息。

【讨论】:

  • 使用这种格式,我收到了读取拒绝消息。我在想我传递活动提要消息的方式可能需要调整。将“.read”和“.indexon”上移一层仍然可以触发验证。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 2016-06-12
  • 2019-03-09
  • 1970-01-01
  • 2018-01-24
相关资源
最近更新 更多