2012-04-20 15 views
11

mam błąd podczas kiedykolwiek próbuję się zalogować przez każdego Użytkownika błęduPASSWORD_HASHERS ustawień w Django

nieznane hasło algorytm skrótu „Sahar”. Czy określono go w ustawieniu PASSWORD_HASHERS na ?

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) 

Odpowiedz

24

Oznacza to nie jest zwykły tekst 'sahar' przechowywane jako hasło konta użytkownika, który próbuje się zalogować.
Aktualizacja hasło użytkownika admin lub w 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() 

sprawdź także inne swoje poglądy do skorygowania user.password = '...' i User.objects.create(password='...') zwyczaje.

+0

Chciałem powiedzieć to samo. Wygląda na to, że jest to błąd, ale czy to nie jest prawdziwe hasło? –

+3

@DanielRoseman Tak, obecne zachowanie nie jest dobre: ​​traktuje surowe hasło, które nie jest już przydatne do logowania, jako hasher, a nawet wyświetla je z powrotem. Być może bardziej odpowiednie może być zresetowanie hasła i administratora ostrzeżeń. Możliwe też, że pole 'password' powinno zostać zmodyfikowane tak, aby nie akceptowało bezpośredniego przypisania, ale automatycznie opakowuje zawartość w/hasher. – okm

+0

Przepraszam, że jestem nowym uczniem Django, ale 'sahar' to rzeczywiste hasło użytkownika, z którym próbuję się zalogować i jest to zapisane w bazie danych w ten sposób – May

0

Jest to najlepszy sposób, aby zaoszczędzić zalogować szczegóły można utworzyć obiekt z formularza jak

user = form.save(commit=False) 

następnie wyczyścić dane, aby usunąć wszelkie skrypty wprowadzone w polach formularza.

Powiązane problemy