2016-05-27 4 views
0

Also versuche ich, die Authentifizierungsmethode in meinen Ansichten zu verwenden, aber immer "Does not exists" zurück, ich benutze MD5-Hash für mein Passwort-Feld, also ich don ‚t wissen, ob das ist das ProblemDjango - Wie authentifiziere ich ein Passwort mit MD5 Hash

forms.py

class LoginForm(forms.Form): 
    email = forms.EmailField() 
    password = forms.CharField(widget=forms.PasswordInput) 

    #This Method Hash the password 
    def clean_password(self): 
     clearPassNoHash = self.cleaned_data['password'] 
     self.password = md5.new(clearPassNoHash).hexdigest() 
     return self.password 

views.py

def auth_login(request): 
    args = {} 
    form = LoginForm(request.POST) 
    email = request.POST['email'] 
    password = request.POST['password'] 
    user = authenticate(email=email, password=password) 
    if user is not None: 
     login(request, user) 
     print("Exist") 
    else: 
     print("Does not exist") 

I habe mit der check_password() methode (in meinen formularen) versucht das funktioniert eigentlich aber ich weiß nicht wieso ich probleme mit der authenticate habe()

------------ ----------------- UPDATE ------------------------------ -

Views.py

def auth_login(request): 
    args = {} 
    form = LoginForm(request.POST) 
    if form.is_valid(): 
     username = form.cleaned_data['username'] 
     password = form.cleaned_data['password'] 

     user = authenticate(username=username, password=password) 
     if user is not None: 
      print("existe") 
      print user 
     else: 
      print user 

    args['form'] = form 
    return render(request, 'login/login.html', args) 

forms.py

class LoginForm(forms.Form): 
    username = forms.CharField() 
    password = forms.CharField(widget=forms.PasswordInput) 

Andere Beobachtung: Ich habe dies in meinem settings.py

mein benutzerdefinierten Modell
AUTH_PROFILE_MODULE = 'StudentUsers.StudentRegistration' 

und das ist das Feld Benutzername mich zu meinem Modell zu verwenden hinzufügen:

class StudentRegistration(AbstractBaseUser, models.Model): 
    username = models.CharField(max_length = 25, null=False, default="", unique=True) 
+0

Was ist diese Authentifizierungsmethode? und existiert der Benutzer wirklich? Und Sie sollten wirklich form.cleaned_data nach der Überprüfung dieser form.is_valid() – e4c5

+0

Authentifizierung verwenden (E-Mail = E-Mail, Passwort = Passwort), und ja, mein Benutzer existiert – BrianCas

+0

Es ist klar aus Ihrer Frage, dass Sie eine Authentifizierungsmethode aufrufen. Meine Frage war, was genau ist diese Authentifizierungsmethode? Woher kommt das? – e4c5

Antwort

0

Sie das Passwort nicht Wert selbst Hashing werden soll. Das macht schon authenticate; Sie haben also zweimal Hashing.

+0

Jetzt habe ich meine Methode clean_password gelöscht, also übergebe ich den Klartext zur Authentifizierung. Außerdem füge ich ein Feld Benutzername in meine Modelle ein. Jetzt benutze ich meine E-Mail, um mich zu authentifizieren. * – BrianCas

+0

Sie können mein Update sehen, könnte es mein Md5hash sein? – BrianCas

+0

Sie müssen wahrscheinlich zuerst zeigen, wie Sie die Benutzer erstellen. –