2012-04-20 9 views
11

ich habe einen Fehler, wenn überhaupt ich versuche, von einem beliebigen Nutzer FehlerPASSWORD_HASHERS in Django Einstellung

Unknown Passwort-Hashing-Algorithmus ‚sahar‘ anmelden. Haben Sie es in der PASSWORD_HASHERS Einstellung angegeben?

Views.Py

def Login(request): 
    state = "Please log in below..." 
    username = password = '' 
    if request.method == 'POST': 
     username = request.POST['username'] 
     password = request.POST['password'] 
     user = authenticate(username=username, password=password) 
     if user is not None: 
       if user.is_active: 
        login(request, user) 
        return HttpResponseRedirect('/profile/') 
       else: 
        return render_to_response('auth.html',RequestContext(request)) 

     else: 
       return render_to_response('auth.html',RequestContext(request)) 
    else: 
      return render_to_response('auth.html',RequestContext(request) 

Antwort

24

Es bedeutet, dass es ein einfacher Text 'sahar' als Passwort des Kontos eines Benutzers gespeichert ist, die eingeloggt sein versucht.
aktualisiert das Passwort des Benutzers in Admin oder in manage.py shell

user = User.objects.get(username=username) 

# use set_password method 
user.set_password('sahar') 
user.save() 

# INSTEAD OF 
user.password = 'sahar' 
user.save() 

auch Ihre anderen Ansichten überprüfen Sie die user.password = '...' und User.objects.create(password='...') Verbräuche zu korrigieren.

+0

War gerade dabei, dasselbe zu sagen. Sieht aber wie ein Bug aus, nicht wahr, dass es tatsächlich das rohe Passwort wiedergibt? –

+3

@DanielRoseman Ja, das aktuelle Verhalten ist nicht gut: Es behandelt ein Raw-Passwort, das nicht mehr für die Protokollierung nützlich ist, als Hasher und sogar zeigen es zurück. Vielleicht ist das Zurücksetzen des Passworts und der Warnung admin sofort sinnvoller. Auch sollte das 'Passwort'-Feld optimiert werden, um keine direkte Zuweisung zu akzeptieren, sondern den Inhalt automatisch mit Hashes zusammenfassen. – okm

+0

iam sorry wie ich um einen neuen Django Lerner aber 'sahar' ist das eigentliche Passwort des Benutzers iam versucht, mit zu loggen und es ist in der Datenbank auf diese Weise angegeben – May

0

Dies ist der beste Weg, melden Sie sich sparen in Details Sie ein Objekt aus dem Formular als

user = form.save(commit=False) 

dann reinigen Sie die Daten alle Skripte in die Formularfelder eingegeben entfernen erstellen können.

username = form.cleaned_data['username'] 
password = form.cleaned_data['password'] 
user.set_password(password) 
user.save()