/ / le mot de passe saisi dans le formulaire de connexion avec le mot de passe dans la base de données ne fonctionne pas - django, django-authentication

la correspondance du mot de passe entré dans le formulaire de connexion avec le mot de passe dans la base de données ne fonctionne pas - django, django-authentication

J'utilise la méthode définie dans la documentation django: http: //www.djangobook.com/en/beta/chapter12/

def login(request):
m = members.get_object(username__exact=request.POST["username"])
if m.password == request.POST["password"]:
request.session["member_id"] = m.id
return HttpResponse("You"re logged in.")
else:
return HttpResponse("Your username and password didn"t match.")

mais cela semble ne pas correspondre correctement au mot de passe! J'entre un nom d'utilisateur et un mot de passe valides mais il ne trouve pas l'utilisateur, lorsque je supprime cette ligne, cela fonctionne:

if m.password == request.POST["password"]:

Je pense que parce que ce mot de passe est haché, il ne correspond pas au mot de passe ordinaire que l’utilisateur entre dans le formulaire de connexion.

alors, que dois-je faire maintenant?

Réponses:

4 pour la réponse № 1

Vous devez utiliser user.check_password pour cela. La raison en est que le mot de passe est stocké haché et vous ne pouvez pas le comparer directement comme ça.

P.S. Découvrez comment fonctionnent les backends d'authentification.


1 pour la réponse № 2

Ce n'est pas censé être un exemple de la façon de faire l'authentification. Vous trouverez un peu l'exemple réel plus bas sur la page.