2016-06-19 9 views
2

Ich verwende Firebase für meine App und habe mich gefragt, wie ich bestimmte Benutzer blockieren kann. Ich sehe auf der Registerkarte Auth der Konsole, gibt es "löschen" und "deaktivieren" -Optionen. Was machen die? Ich habe dazu keine Dokumentation gefunden. Wird mir einer davon erlauben, einen Benutzer zu blockieren?Wie blockieren Sie Benutzer auf Firebase?

Was meine ich mit einem Benutzer blockiert ist für die ".read": "auth != null" Regel ihn zu verhindern, dass die Daten der Datenbank zugreifen

+0

Hey @PhilipSopher, lassen Sie mich wissen, ob meine Antwort nicht klar war, oder Sie noch andere Anliegen haben. Vielen Dank! – adolfosrs

+0

@adolfosrs Danke für die Antwort. Ich habe zwei Fragen: 1) Wie würde der Knoten "blockedUsers" aussehen? Ist es ein Array, ein Wörterbuch, etc? Können Sie ein Codebeispiel angeben? 2) Deaktiviert die Funktion ** disable ** einen Benutzer, der gerade angemeldet ist? –

+1

Nur die Antwort mit zusätzlichen Informationen für die ** erste Frage ** aktualisiert. In Bezug auf die ** zweite Frage ** hängt dies davon ab, ob Sie Benutzer für Ihre Implementierung ständig erneut authentifizieren. Wenn es ein kritisches Ereignis gibt, das Sie abdecken möchten, können Sie es reauthentifizieren, um es zu behandeln. Sonst wirst du nicht unauth. – adolfosrs

Antwort

10

Die deaktivieren Funktion bestehen, dass die Benutzer bei der Verhinderung zu authentifizieren. Wenn er also versucht, sich zu authentifizieren, wird er mit dem Fehlercode INVALID_CREDENTIALS fehlschlagen und er wird keinen Zugriff auf die Daten haben, die die ".read": "auth != null" Regel haben. Es funktioniert so, als wäre er gelöscht, aber der Admin hat immer noch die Möglichkeit, das Benutzerkonto zu reaktivieren.

Wenn Sie eine Liste der „blockierten Usern“ aufbauen wollen, die Lage zu authentifizieren aber Zugriff eingeschränkt haben, können Sie die blockierten IDs in einem Knoten auf dem Feuerbasis Datenbank wie /databaseRoot/blockedUsers speichern und dann mit der Arbeit security and rules.

".read": "auth != null && !root.child('blockedUsers').hasChild(auth.uid)" 

blockedUsers wie der Baum unten aussehen könnte, aber man könnte auch eine andere Infos unter der userId wie das Datum dieser Benutzer gesperrt wurde hinzufügen.

Das Hinzufügen des Benutzers zu dieser Liste hängt von Ihrer Notwendigkeit ab. Sie können dies manuell tun, indem Sie auf die Firebase-Konsole zugreifen und die Benutzer-ID zum Knoten hinzufügen. Oder, wenn Sie einen Benutzer auf ein Ereignis basierend auf der Anwendung blockieren möchten, können Sie rufen Sie einfach so etwas wie

ref.child('blockedUsers').child(userIdToBlock).set(true); 
+0

Ich suche etwas ähnliches. Ich möchte nicht zulassen, dass sich die Benutzer bei meiner Anwendung authentifizieren. Also möchte ich eine "weiße Liste" von Benutzern haben, und alle anderen haben keinen Zugriff auf die Anwendung. Wie kann ich das machen? – Sandra