2012-04-20 15 views
11

Tengo un error cuando cada vez que intento acceder por cualquier usuario errorPASSWORD_HASHERS ajuste en Django

Desconocido contraseña algoritmo de hash 'de Sahar. ¿Lo especificó en la configuración PASSWORD_HASHERS?

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) 

Respuesta

24

Significa que hay un texto plano 'sahar' almacenado como la contraseña de la cuenta de un usuario que intenta conectarse.
actualizar la contraseña del usuario en administración o en 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() 

compruebe también otros puntos de vista para corregir los user.password = '...' y User.objects.create(password='...') usos.

+0

Estaba a punto de decir lo mismo. Parece un error, ¿no es cierto que realmente hace eco de la contraseña sin procesar? –

+3

@DanielRoseman Sí, el comportamiento actual no es bueno: trata una contraseña sin formato que ya no es útil para el registro, como hasher e incluso la muestra de nuevo. Tal vez sea más apropiado restablecer la contraseña y avisar al administrador de inmediato. Además, tal vez el campo 'contraseña 'debe modificarse para que no acepte la asignación directa, pero ajusta el contenido automáticamente con hashers. – okm

+0

iam siento que soy un nuevo aprendiz de Django, pero 'sahar' es la contraseña real del usuario que intenta iniciar sesión y está en la base de datos de esa manera – May

0

Esta es la mejor manera de ahorrar datos de acceso puede crear un objeto de forma como

user = form.save(commit=False) 

luego limpiar los datos para eliminar las secuencias de comandos introducidos en los campos del formulario.

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