2015-04-22 67 views
3

如何防止用户通过使用有效的身份验证uid发布某些内容来欺骗用户名,但使用了错误的“用户名”?您会如何防止用户欺骗Firebase中的用户名?

我只能存储UID,但我必须让客户端始终查找所有UID。如果我能以某种方式确保指定的用户名与登录用户的用户名相同,这将是理想的。

理想情况下,我会做一个规则,看起来像这样:

{ 
    "rules": { 
     "chat":{ 
      "messages":{ 
      ".read":true, 
      ".write":true, 
      "$message":{ 
       ".read":true, 
       ".write":true 
       ".validate": "newData.child('name').val() == auth.facebook.displayName" 
      } 
      } 
     } 
    } 
} 

但AUTH变量不包含用户名。

回答

4

在大多数情况下,开发人员将所有用户的完整信息存储在其Firebase中的/users节点下。例如。

/ 
    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()"