阻止用户写入firebase表中的特定字段
我试图找出如何阻止用户在自己的数据(用户内部)中写入用户名字段。最干净的方法是什么?我想我需要做一个云函数来检查用户名是否是唯一的,然后才允许写入,但目前规则允许用户写入用户中的任何字段阻止用户写入firebase表中的特定字段,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我试图找出如何阻止用户在自己的数据(用户内部)中写入用户名字段。最干净的方法是什么?我想我需要做一个云函数来检查用户名是否是唯一的,然后才允许写入,但目前规则允许用户写入用户中的任何字段 您正在尝试验证用户请求的更新是否有效。你可以通过以下方式实现它 这些查询现在将失败 UPDATE { username: 23, displayName: "frank" } 但这些都是成功的 UPDATE { username: 77, displayName: &
您正在尝试验证用户请求的更新是否有效。你可以通过以下方式实现它 这些查询现在将失败
UPDATE
{
username: 23,
displayName: "frank"
}
但这些都是成功的
UPDATE
{
username: 77,
displayName: "doug"
}
**注**:如果您在客户端本身创建用户帐户,即用户名最初由客户端本身提供,则上述查询将失败,因为用户名不存在。为此,您可能需要更改为:
".validate": "!data.exists() || newData.val() === data.val()"
非常感谢,我不希望他们能够写的用户名在所有。这可以通过云函数完成,并且只允许他们写入唯一的用户名。但是,在某些情况下,用户仍然可以写入字段。我不这么认为。validate规则确保字段不能被覆盖。简单地说,
newData.val()===data.val()
确保旧数据(原始用户名)应该与新数据相同。好的,这应该被更改更新{username:7,displayName:“doug”}
UPDATE
{
username: 37
}
UPDATE
{
username: 77,
displayName: "doug"
}
UPDATE
{
displayName: "Doug"
}
".validate": "!data.exists() || newData.val() === data.val()"