Tengo un proyecto de django en el que estoy usando Django-rest-auth para realizar la autenticación. Quiero usar el correo electrónico con contraseña para autenticar al usuario y no el nombre de usuario y la contraseña.
Tengo las siguientes configuraciones en mi configuración.py pero no hizo nada por mí:
REST_SESSION_LOGIN = True EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_AUTHENTICATION_METHOD = 'EMAIL' ACCOUNT_EMAIL_VERIFICATION = 'optional'
¿Cómo puedo lograrlo?
El siguiente ajuste funcionó:
#This is required otherwise it asks for email server EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' # ACCOUNT_EMAIL_REQUIRED = True # AUTHENTICATION_METHOD = 'EMAIL' # ACCOUNT_EMAIL_VERIFICATION = 'optional' ACCOUNT_AUTHENTICATION_METHOD = 'email' ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_USERNAME_REQUIRED = False #Following is added to enable registration with email instead of username AUTHENTICATION_BACKENDS = ( # Needed to login by username in Django admin, regardless of `allauth` "django.contrib.auth.backends.ModelBackend", # `allauth` specific authentication methods, such as login by e-mail "allauth.account.auth_backends.AuthenticationBackend", )
También estoy usando este paquete, y al llamar a esta configuración funcionó para mí:
ACCOUNT_AUTHENTICATION_METHOD = 'email'
Tenga cuidado con esta configuración, esta configuración pertenece a django-allauth
, vea esto:
class AuthenticationMethod: USERNAME = 'username' EMAIL = 'email' USERNAME_EMAIL = 'username_email'
Por encima de la clase hay una configuración que está en allauth
, así que escribe ‘CORREO ELECTRÓNICO’ en minúsculas.
Espero que ayude