2017-02-09 1 views
0

Ich habe eine Chat-App mit Firebase erstellt, und manchmal Chat-Benutzer überschwemmen den Champ und ich möchte ihn blockieren.Firebase-Regeln: Schreiben für Benutzernamen deaktivieren

habe ich mein Block Verfahren folgendes festgelegt:

chat_blocks/USERNAME_TO_BLOCK:true 

und meine Regeln:

".write": "!root.child('chat_blocks/'+newData.child('username').val()).exists()" 

Aber es blockiert alle.

Meine Struktur ist einfach:

chat_messages 
-$key 
-- username 
-- message 

chat_messages/--list of messages 
+0

Das Hinzufügen Ihres aktuellen Datenbankbaums kann hilfreich sein. – eshirima

+0

@EmilDavid Sorry habe es vergessen. Es ist das einfachste, ich habe die Struktur hinzugefügt – TheUnreal

+0

Erstens, wissen Sie, dass in Firebase-Regeln eine Regel an einem übergeordneten Knoten auf alle seine untergeordneten Knoten angewendet wird? – eshirima

Antwort

0

ich einige graben tat und fand zwei Lösungen.

1. Legen Sie ein Verbot von einem Benutzer

Betrachten wir ein bannedFor Knoten unter Ihrem users Baum hinzufügen. Dann alles, was Sie zu tun haben würde, ist zu Ihrem users Knoten gehen und sicherstellen, dass Informationen nicht und sie nicht gibt den Zugang zu sowohl .read und .write

users 
    $uid 
    "bannedUntil": 1486599300 

Nun, wenn es um Ihre Regeln kommt, wäre es etwas aussehen wie diese

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": "!data.child('bannedUntil').exists() || data.child('bannedUntil').val() < now" 
     } 
    } 
    } 
} 

2. eine Nachrichtenrate Set

Begrenzung der Menge an Nachrichten kann ein Benutzer in einem bestimmten Zeitschlitz senden. Ich fand eine jsfiddle zusammen mit der rules für diese Lösung.

Gas Nachrichten nicht mehr als ein alle 5.000 Millisekunden

PS: Ich weiß, dass dies nicht notwendigerweise Ihr aktuelles Problem lösen, aber es bietet alternative Lösungen.

+0

Dies ist eine großartige Alternative. Meine Benutzer sind auf meiner Server-Seite und nicht in meiner Firebase gespeichert, deshalb ist sie momentan nicht relevant. – TheUnreal

Verwandte Themen