0

Vor dem Erstellen meines neuen Benutzers möchte ich Firebase überprüfen, um festzustellen, ob der Benutzername bereits in der Datenbank vorhanden ist. Ich würde dies gerne tun, nachdem der Benutzer die Bearbeitung des Textfelds Benutzername abgeschlossen hat (der Rest meines Formulars wird nicht vollständig sein). Ich habe versucht, auf die Firebase-DB zuzugreifen, aber ich bekomme die Warnung "Listener at/Users failed: permission_denied". Von dem, was ich verstehe, muss der Benutzer authentifiziert werden, um in der Firebase-DB zu lesen/schreiben, und offensichtlich wird ein Benutzer, der sich anmeldet, nicht authentifiziert, bevor er sich registriert hat. Gibt es eine Möglichkeit, auf die Datenbank zuzugreifen, bevor die Methode createUserWithEmail:password:completion: ausgeführt wird?Ist es möglich, vor dem Erstellen eines neuen Benutzers auf Firebase-Daten zuzugreifen? (Swift)

+0

Die größere Frage; ist die E-Mail-Adresse, die beim Erstellen eines Firebase-Kontos verwendet wird, die gleiche wie ein * Benutzername *? Wenn ja, wird Firebase Ihnen automatisch mitteilen, ob dieser Benutzername bereits existiert, wenn Sie versuchen, den Benutzer zu erstellen. Wenn nein, warum nicht? – Jay

+0

Ich würde es vorziehen, den Benutzernamen/die E-Mail-Eindeutigkeit unmittelbar nach der Bearbeitung des Textfelds Benutzername/E-Mail zu überprüfen, im Gegensatz dazu, dass der Benutzer das gesamte Formular ausfüllen, abschicken und dann einen neuen Benutzernamen/E-Mail-Adresse auswählen muss es ist ein Duplikat). Aus Gründen der Einfachheit kann ich jedoch nur diesen Weg gehen. Danke @Jay – lynchspin

Antwort

3

Um klar zu sein, lassen Sie mich sagen, dass ich tun NICHT empfehlen, dass Sie dies für Ihren Anwendungsfall tun. Aber in der Regel können Sie nicht authentifizierte Benutzer erlauben Teile der Datenbank zuzugreifen, indem Sie Ihre Sicherheitsregeln für diesen Pfad auf true setzen:

{ 
    "rules": { 
     ".read": true, 
     ".write": true 
    } 
} 

Sie würden nicht wollen, so etwas tun, weil Sie nicht wollen, der Öffentlichkeit Zugriff auf die Benutzernamen aller zu geben.

Stattdessen würde ich Cloud-Funktionen für Firebase empfehlen. Sie können eine Cloud-Funktion erstellen, die ausgelöst wird, wenn ein Benutzer einen Benutzernamen auswählt, beispielsweise indem er einen temporären Pfad in der Datenbank erstellt und einen Datenbank-Trigger verwendet. Nun, wenn Sie mit Cloud Functions oder Node.js nicht vertraut sind, werden Sie eine Menge neuer Informationen im Voraus erfahren, aber Sie werden feststellen, dass es viele Anwendungsfälle für Funktionen gibt, so dass es sich lohnt zu lernen.

Hier sind einige Ressourcen zu überprüfen:

Get Started

Cloud Functions Database Triggers

Cloud Functions Documentation

+0

Danke für die gründliche Antwort, @JenPerson! Ich wollte "sicher" in die Frage aufnehmen, also werde ich mit Ihrem zweiten Vorschlag fortfahren. – lynchspin

Verwandte Themen