如何通过使用有效的身份验证,但错误的“用户名”向Firebase发布内容来阻止用户欺骗用户名?
我只能存储UID,但是我必须让客户端一直查找所有UID。如果我能以某种方式确保指定的用户名与登录用户的用户名相同,那将是理想的。
理想情况下,我会制定一个如下规则:
{
"rules": {
"chat":{
"messages":{
".read":true,
".write":true,
"$message":{
".read":true,
".write":true
".validate": "newData.child('name').val() == auth.facebook.displayName"
}
}
}
}
}
但是auth变量不包含用户名。
答案 0 :(得分:4)
在大多数此类情况下,开发人员会将所有用户的完整信息存储在其Firebase中的/users
节点下。 E.g。
/
users
twitter:478645678
username: "puf"
displayName: "Frank van Puffelen"
chat
messages
-J328764236789
author: twitter:478645678
name: "puf"
message: "Hello world"
使用此结构,您可以将用户名交叉引用到/users/<uid>/username
:
".validate": "newData.child('name').val() == root.child('users').child(auth.uid).child('username').val()"