Neuling hier. Was ich versuche zu tun, ist es Benutzern zu erlauben, sich über ihre Telefonnummer zu registrieren, nur wenn ihre Telefonnummern früher vom Administrator hinzugefügt wurden. Jede Hilfe oder Verbindung zu Ressourcen wäre sehr hilfreich. Vielen Dank!Firebase: Registrieren von Benutzern anhand ihrer Telefonnummern, die von admin hinzugefügt wurden
Firebase: Registrieren von Benutzern anhand ihrer Telefonnummern, die von admin hinzugefügt wurden
Antwort
Grundsätzlich müssten Sie über Ihren Administrator-Account die "guten" Zahlen innerhalb eines Knotens hinzufügen, nennen wir es "white_list" und dessen Verweis whiteListRef.
Dann würden Sie die beiden wesentlichen Methoden Firebase benötigen einen Benutzer über seine Telefonnummer zu registrieren, die erste ist:
PhoneAuthProvider.provider().verifyPhoneNumber(phone_number) { }
Es wird ein Bestätigungscode an den Benutzer senden.
Dann müssen Sie diese Methode hinzufügen:
Auth.auth().signIn(with: credential) { }
Berechtigungsnachweis erstellt wird mit dem verificationID Sie von der ersten Methode bekam, und den Bestätigungscode ein, dass die Benutzer auf seine Telefonnummer erhalten, wenn seine Nummer richtig war:
let credential = PhoneAuthProvider.provider().credential(
withVerificationID: verificationID,
verificationCode: verificationCode)
in Ihrem Fall würden Sie überprüfen müssen, dass die Telefonnummer Ihrer Benutzer in unter der weißen Liste eingegeben ist (dass Ihr Admin in den white_list Knoten hinzugefügt). Abhängig von Ihrer Datenbankstruktur, beispielsweise eine Methode wie diese verwenden:
func checkNumberEligibility(_ phoneNumber: String, completion: @escaping(Bool) -> Void) {
whiteListRef.observeSingleEvent(of: .value, with: { (snapshot) in
guard let numberEligibility = snapshot.childSnapshot(forPath: "eligibility").value as? String else { return }
if numberEligibility == "good" {
completion(true)
} else {
completion(false)
}
})
Schließlich würden Sie so etwas wie dieses:
func registerPhoneNumber(_ phoneNumber: String, completion: @escaping() -> Void) {
PhoneAuthProvider.provider().verifyPhoneNumber(phoneNumber) { [weak self] (verificationID, error) in
guard error == nil else {
return
}
self?.checkNumberEligibility(phoneNumber) { (isNumberOkay) in
guard isNumberOkay else {
return
}
UserDefaults.standard.set(verificationID, forKey: "authVerificationID")
}
}
}
func verifyCode(_ verificationCode: String, completion: @escaping() -> Void) {
guard let verificationID = UserDefaults.standard.string(forKey: "authVerificationID") else {
return
}
let credential = PhoneAuthProvider.provider().credential(
withVerificationID: verificationID,
verificationCode: verificationCode)
Auth.auth().signIn(with: credential, completion: { (user, error) in
guard error == nil else {
return
}
completion()
})
}
Dies funktionieren würde, aber zu Wenn Sie dies so tun, bedeutet dies, dass Sie den Zugriff über die Datenbankregeln auf diesen Whitelist-Knoten jeder Person (dh auch Nichtbenutzern Ihrer App) gewähren müssen, die Sie möglicherweise Sicherheitsrisiken aussetzt. Sie könnten dies vor der Implementierung dieses Systems berücksichtigen.
Lassen Sie mich wissen, wenn Sie Fragen haben!
Sie haben Recht. Ich dachte nicht an die Sicherheitsprobleme. Die Handynummern würden exponiert bleiben. Danke für die Antwort. Ich habe daraus gelernt. – user165242
Kein Problem, ich bin froh, dass ich helfen konnte – Alex
- 1. Registrieren von Modellen in der Admin-App
- 2. Entfernen von Einschränkungen, die programmgesteuert hinzugefügt wurden
- 3. Android - Zwei Arten von Benutzern in Firebase
- 4. ASP.NET - zwei Arten von Benutzern, die in einem Registrierungsformular registrieren?
- 5. Firebase - Erstellen von zwei Ebenen von Benutzern
- 6. Was passiert mit anonymen Benutzern von Firebase?
- 7. Entfernen von Ankerelementen, die von der Server-Seite hinzugefügt wurden
- 8. Identity Server 4 Registrieren von Benutzern von externen Providern
- 9. Firebase-Mandantenfähigkeit mit mehreren Benutzern
- 10. Laravel schützen Routen von Benutzern, die nicht admin sind
- 11. Eine Überladungsadresse nur anhand ihrer Parameter finden
- 12. Migrieren von Parse-Benutzern zu Firebase-Auth-Benutzern
- 13. Firebase-Admin: Abrufen von PhoneNumber von Uid
- 14. Firebase Web Speichern/Wiederherstellen von aktuellen Benutzern
- 15. Android Firebase - Hinzufügen von Werten zu Benutzern
- 16. Eindeutige eingebettete Objekte anhand ihrer Eigenschaften auswählen
- 17. Durchsuchen von Objekten, die von Struktur erstellt wurden
- 18. MySQL: Abrufen von Zeilen, die letzte Stunde hinzugefügt wurden
- 19. Zufällige Leerzeichen, die bei Verwendung von strcat hinzugefügt wurden
- 20. Erweitern des Benutzerprofils in Django. Admin Erstellung von Benutzern
- 21. twitteR - Konstruieren einer Grafik von Benutzern basierend auf ihrer Position
- 22. Abrufen von Benutzern nach verschachtelter Eigenschaft in Firebase
- 23. Verbinden von zwei Telefonnummern
- 24. Erstellen von Benutzern in neuen Firebase und Swift
- 25. Schützen von Firebasedaten von autorisierten Benutzern zum Aktualisieren ihrer eigenen Daten
- 26. Cloud Endpoints + Firebase Admin SDK: Authentifizierung von Benutzern über ihre FirebaseUser-Token
- 27. So heben Sie die Registrierung von Service Worker auf, die von Firebase Messaging installiert wurden
- 28. Wie Listener für mehrere Firebase-Referenzen registrieren
- 29. Hinzufügen von Firebase Admin SDK zu Swift
- 30. Mehrere Instanzen von Firebase-Admin erstellen
Es kann nicht verhindert werden, dass sich ein Benutzer bei der Firebase-Authentifizierung authentifiziert. Sie können jedoch verhindern, dass sie andere Ressourcen verwenden. Weitere Informationen zur Vorgehensweise für die Firebase-Datenbank finden Sie unter: https://firebase.google.com/docs/database/security/user-security –
Vielen Dank für die Ressource. Von deiner und Alex 'Antwort glaube ich, dass ich diese Idee nicht durchdacht habe. Die Überprüfung von Handynummern vor der Hand führt zu Problemen und sollte nicht durchgeführt werden. Wahrscheinlich sollte ich einfach eine SMS-Bestätigung (über Dritte) schicken, sobald der Administrator eine Handynummer eingibt und den Benutzer auffordert, sich mit diesem Code/Passwort anzumelden und später sein Passwort zu ändern. [bearbeitet: für Lesbarkeit] – user165242