Ich möchte verhindern, dass der Benutzername während der Anmeldeform, was Benutzer eingegeben. Ich habe E-Mail-Login wie unten erstellt, zuerst createUser und dann auth setValue mit Benutzerwörterbuch.Wie verhindern Sie, dass der Benutzername sich in Firebase doppelt anmeldet?
Aber ich stapeln mit Firebase Sicherheitseinstellungen und wie Sie diese Situation behandeln.
REF_BASE.createUser(email, password: pwd, withValueCompletionBlock: { ..
REF_BASE.authUser(email, password: pwd, withCompletionBlock: { ..
REF_USERS.childByAppendingPath(uid).setValue(user)
Diese Behandlung immer Antwortfehler.
Dies sind meine Sicherheitsregeln, Wie kann ich alles verhindern, dass doppelte Benutzer verhindert werden?
"users": {
".read": "auth !== null",
"$user": {
"username": {
".read": "auth !== null",
".write": "newData.val() === auth.uid && !data.exists()"
}
}
},
Update:
Von Frank Antwort, aber ich weiß nicht, was ich während SIGNUP neuen Benutzer für eine rasche in dieser Situation tun müssen.
app : {
users: {
"some-user-uid": {
email: "[email protected]"
username: "myname"
}
},
usernames: {
"myname": "some-user-uid"
}
}
Muss ich die gleiche Benutzer-UID zur gleichen Zeit für zwei verschiedene Knoten hinzufügen? Wenn jemand es in Swift erklärt. Es wäre toll.
"users": {
"$uid": {
".write": "auth !== null && auth.uid === $uid",
".read": "auth !== null && auth.provider === 'password'",
"username": {
".validate": "
!root.child('usernames').child(newData.val()).exists() ||
root.child('usernames').child(newData.val()).val() == $uid"
}
}
}
I keine neuen Benutzer Informationen zu Benutzernamen übergeordneten Knoten hinzufügen könnte. Es ist eine andere Sicherheitsregeln erforderlich?
Welchen Fehler bekommen Sie genau? –
Ich bekomme, [Firebase] setValue: oder removeValue: at/users/8372c890-112d-4a75-924c-98814ea15963/Benutzername fehlgeschlagen: permission_denied – tobeiosdev
Erster Punkt ist Ihre zweite .read Regel ist veraltet, weil [Regeln Kaskade] (https : //www.firebase.com/docs/security/guide/securing-data.html#section-cascade). Und für den Fehler bin ich nicht ganz sicher, aber es sieht so aus, als ob Sie versuchen, einen Benutzer in firebase zu schreiben, und in Ihren Regeln erlauben Sie nur den Wert als UID (newData.val() === auth.guid) –