web-dev-qa-db-fra.com

Authentification du nom d'utilisateur au lieu de l'e-mail

Avec Firebase, je peux m'inscrire et me connecter aux utilisateurs à l'aide des adresses e-mail. Cependant, que se passe-t-il si je veux que l'application soit basée sur le nom d'utilisateur. Par exemple, vous vous connecteriez avec "Bobzilla" au lieu de "[email protected]"?

Est-ce possible avec Firebase?

20
vikzilla

Il n'y a pas de fournisseur de nom d'utilisateur + mot de passe par défaut intégré à l'authentification Firebase. Mais vous pouvez créer votre propre fournisseur d'identité personnalisé en utilisant instructions dans la documentation Firebase . Cela nécessite du code qui s'exécute dans un environnement approuvé, pour lequel vous pouvez utiliser votre propre serveur ou Cloud Functions for Firebase . Il y a même maintenant un exemple de ceci dans le repo des fonctions-échantillons .


Alternativement: vous pouvez utiliser le fournisseur de messagerie + mot de passe intégré et simplement ajouter n'importe quel domaine derrière le nom d'utilisateur. Donc, une fois que vous avez déterminé le nom d'utilisateur, enregistrez votre utilisateur avec <username>@vikzillasapp.com.

Notez que cela empêchera l'utilisateur de réinitialiser son mot de passe s'il l'oublie, car Firebase utilise l'adresse e-mail pour envoyer l'e-mail de réinitialisation du mot de passe.

19
Frank van Puffelen

Au lieu d'utiliser une méthode dans laquelle vous attribuez une adresse e-mail à l'utilisateur, il peut être préférable de rechercher une adresse e-mail dans votre base de données.

Un exemple serait:

  1. Inviter le nom d'utilisateur à se connecter avec nom d'utilisateur et mot de passe
  2. Vérifiez que le nom d'utilisateur existe dans votre base de données et récupérez l'adresse e-mail correspondante pour ce compte
  3. Transmettez cette adresse e-mail au processus de connexion de manière transparente
5
Scott D

Vous pouvez utiliser authentification personnalisée Firebase . L'authentification personnalisée est une méthode permettant à l'utilisateur de se connecter à l'application à l'aide d'un jeton personnalisé.

Mais, vous avez besoin d'un code backend, pour créer un jeton personnalisé lorsque l'utilisateur envoie un nom d'utilisateur et un mot de passe à ce backend.

Heureusement, il existe maintenant une fonction cloud Firebase, avec événement http, qui peut résoudre votre problème facilement. L'étape est:

  1. L'utilisateur envoie le nom d'utilisateur et le mot de passe à l'URL de la fonction cloud via les paramètres de requête (GET) ou le corps de la requête (POST)

  2. Cloud funtion vérifiera si le nom d'utilisateur et le mot de passe sont valides (ex: de la base de données en temps réel)

  3. Si le nom d'utilisateur et le mot de passe sont valides, la fonction cloud créera un jeton personnalisé à l'aide de userId (vous devez enregistrer l'ID utilisateur). Et puis l'envoyer au corps de réponse

  4. Le client peut alors se connecter en utilisant ce jeton personnalisé

3
faruk