2015-04-22 65 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()"