écrire ma propre backend d'authentification dans le fichier project/emailauth.py
avec le contenu:Django authentifie par email
from django.contrib.auth.hashers import check_password
from django.contrib.auth.models import User
class EmailBackend(object):
def authenticate(self, username=None, password=None):
print("Email auth")
try:
user = User._default_manager.get(email=username)
if user.check_password(password):
return user
except User.DoesNotExist:
return None
except:
return None
def get_user(self, user_id):
try:
return User._default_manager.get(pk=user_id)
except User.DoesNotExist:
return None
Dans mon project/settings.py
à la fin du fichier, j'ai ajouté le contenu:
AUTHENTICATION_BACKENDS = (
'project.emailauth.EmailBackend',
'django.contrib.auth.backends.ModelBackend',
)
J'utilise Authentifier Methon à userprofile/views.py
:
from django.contrib.auth import authenticate, login, logout
#...
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
profile = authenticate(username=username, password=password)
if profile is not None:
login(request, profile)
return HttpResponseRedirect(redirect_to)
#...
Les mos t intéressant je remarque que la sortie de la console Email auth
seulement quand j'essaye de me connecter par nom d'utilisateur et mot de passe si j'utilise l'email et le mot de passe il n'y a pas de sortie dans la console. On dirait que mon authentification personnalisée se déclenche après la méthode standard ...
Quelqu'un peut-il me montrer où j'ai fait une erreur?