gpt4 book ai didi

android - Firebase 规则解析错误

转载 作者:行者123 更新时间:2023-11-30 05:11:42 26 4
gpt4 key购买 nike

我正在尝试为我的数据库设置 firebase 规则,但我遇到了 datanewData

的问题

根据火力点:

newData A RuleDataSnapshot corresponding to the data that will result if the write is allowed.

For .write and .validate rules, the newData variable gives you a RuleDataSnapshot corresponding to the data that will result if the write is allowed (it is a "merging" of the existing data plus the new data being written).

所以我有以下规则:

"users_details":{  
"$uid":{
".write":"$uid == auth.uid && newData.exists()",
".read":"$uid == auth.uid",
".validate":"newData.child('auth').hasChild('crsfToken')",
}

用户有一个字段auth,它有一个字段crsfToken...所以每次有人写一个用户我想确保“编辑”用户将有认证/crsfToken

好的。

假设 a 有一个实际有效的用户 abc

然后我想在 abc 上设置另一个字段,它与任何规则都没有关系......让我们说:abc.field.subField = 1

所以我正在做的是:FirebaseDatabase.getInstance().getReference(Firebase.NODE_USERS_DETAILS).child(user.getUserid()).child("field").child("subField").setValue(1);

这不会更改 authcrsfToken 但我得到 Permision Denied

当我在控制台上进行模拟时,我看到没有写入,因为验证规则被拒绝

为什么?有什么方法可以调试 firebase 规则并查看模拟中的 newData 是什么?

最佳答案

规则解析正常 :) 因为将针对 user_details/UID/* 上的所有数据操作检查规则。因此,如果您更新 user_detail/UID/field/subField,您的规则将被检查并且您将被拒绝访问。你说你想检查 newData.auth.crsfToken 并且你确实在这样做,但现在你想更新字段/子字段而不检查它?在哪种情况下您不想检查 crsfToken 是否存在?

关于android - Firebase 规则解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53614218/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com