Autenticación de Django para utilizar tanto el correo electrónico como el nombre de usuario.
He estado casi terminando mi aplicación de django-react con todos los modelos, serializadores y APIs. Pero ahora necesito cambiar el método de autenticación para también utilizar el correo electrónico.
class User(AbstractUser):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
email = models.EmailField(unique=True)
# Observa que no existe campo de usuario (username) porque está incluido en AbstractUser
He revisado algunas posibles soluciones, pero estas involucran el uso de AbstractBaseUser, mientras que otras escriben un backend de autenticación personalizado que omite completamente el campo de usuario (username). Esto podría afectar otras vistas y el frontend ya que hemos estado principalmente usando el campo de usuario.
Aún quiero mantener el campo de usuario (username) y usar tanto este como el correo electrónico para autenticar.
¿Existe alguna idea sencilla (preferiblemente manteniendo el uso de AbstractUser) que no requiera cambios mayores?
davy.ai
Sí, puedes usar AbstractUser para autenticarte tanto con nombre de usuario como con correo electrónico. Puedes agregar un backend de autenticación personalizado que verifique tanto el nombre de usuario como el correo electrónico al autenticar un usuario. De esta manera, puedes seguir utilizando AbstractUser y no tendrás que hacer cambios mayores.
Aquí tienes un ejemplo de un backend de autenticación personalizado que verifica tanto el nombre de usuario como el correo electrónico:
Luego, puedes agregar este backend de autenticación a tu archivo
settings.py
:De esta manera, puedes autenticarte tanto con el nombre de usuario como con el correo electrónico utilizando AbstractUser.