Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
autenticacion flask
#1
Hola, buenas noches.

Estoy aprendiendo flask y he legado a un punto en el que me he quedado estancado, estoy intentando loguearme en una aplicacion que estoy haciendo pero pareciera que la consulta no me retorna ningun resultado, no se si depronto alguien me pueda colaborar, por favor, no se por donde revisar,  ayuda please. asi tengo mi ruta. pareciera que el error es en la consulta porque cuando hago la validacion va directamente al else, adjunto el proyecto. gracias

@app.route('/login2', methods = ['GET','POST'])
def login2():
    login2_form = forms.Login2Forms(request.form)

    if request.method == 'POST' and login2_form.validate():
        username = login2_form.username.data
        password = login2_form.password.data

        print username
        print password

        session['username'] = login2_form.username.data

        user = User.query.filter_by(username = username).first()

        if user is not None and user.verify_password(password):
            success_message = 'bienvenido {}'.format(username)
            flash(success_message)

            session['username'] = username

            return redirect(url_for('index'))
        else:
            error_message='Usuario o password invalidos'
            flash(error_message)

        session['username'] = login2_form.username.data
    return render_template('login2.html', form = login2_form)


Archivos adjuntos
.gz   saber.tar.gz (Tamaño: 94,07 KB / Descargas: 6)
Responder
#2
Hola, ¿cómo estás?

Probé tu código y pude ingresar correctamente (previamente habiendo creado un usuario). ¿Verificaste que los datos que estás ingresando concuerden con los que están en la base de datos?

Una buena forma de chequear que todo esté en orden es estableciendo un punto de interrupción (véase Usando el depurador) luego de la consulta:

Código:
user = User.query.filter_by(username = username).first()
import pdb; pdb.set_trace()

Así, una vez que ingresas tu nombre y contraseña, dirigite a la consola y el depurador habrá desplegado una consola interactiva para que puedas chequear los valores de las variables (username, password, user) y eventualmente ejecutar una consulta u otras operaciones.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
(06-09-2017, 02:35 AM)Francisco escribió: Hola, ¿cómo estás?

Probé tu código y pude ingresar correctamente (previamente habiendo creado un usuario). ¿Verificaste que los datos que estás ingresando concuerden con los que están en la base de datos?

Una buena forma de chequear que todo esté en orden es estableciendo un punto de interrupción (véase Usando el depurador) luego de la consulta:

Código:
user = User.query.filter_by(username = username).first()
import pdb; pdb.set_trace()

Así, una vez que ingresas tu nombre y contraseña, dirigite a la consola y el depurador habrá desplegado una consola interactiva para que puedas chequear los valores de las variables (username, password, user) y eventualmente ejecutar una consulta u otras operaciones.

Saludos

Hola Francisco, como estas?. Espero que vayas muy bien.

Mira que pruebo con el pdb y me muestra que estoy ingresando los datos bien, pero sin embargo no me permite ingresar, sera que puede ser un error del navegador (uso Mozilla) o que otra cosa puede ser que este fallando que me puedes recomendar, mira aqui adjunto el error y la consulta en la bd. gracias por contribuir con mi aprendizaje amigo, te lo agradezco de corazón.

mira que pruebo con chrome y ahi no me deja hacer las validaciones de los campos usuario y contraseña para saber si tienen contendido, sera que puede ser algo con los navegadores.


Archivos adjuntos Miniatura(s)
           
Responder
#4
Bien, por lo que veo en las imágenes el probema es que en el campo password estás guardando la contraseña en texto plano, mientras que Flask espera que estén cifradas, tal como en los usuarios "gerard" y "sofia". Así, para el usuario "manuel" la función user.verify_password(password) estaría retornando False y por ende obtienes el error. En fin, lo que deberías hacer es crear nuevamente el usuario "manuel" vía el formulario en http://localhost:1500/register para que Flask automáticamente encripte la contraseña antes de almacenarla; o bien aplicar los algoritmos PBKDF2 y SHA256 manualmente a la cadena "admin" y modificar el registro en la base de datos (aunque desconozco realmente cómo funciona esto en Flask internamente).

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#5
pero mira que la encripto y me intento loguear y no me deja, sera posible que sea porque me esta devolviendo el formulario la contraseña sin encriptar???

mira que quite la verificacion del user.verify_password(password): y ahi pasa la consulta, y me redirecciona al index, que crees que puedo verificar para que el password me lo reconozca???


Archivos adjuntos Miniatura(s)
           
Responder
#6
Si la contraseña de tu usuario es "admin", el valor de la base de datos debería ser:


Código:
pbkdf2:sha256:50000$fIsJtI9c$cdfb8882f4c9c7247741d27def1dc70cc3f5efa43f61a4ccd4f39223f9f0e68b


Lo cual difiere del que se muestra en tu imagen. Insisto en que deberías borrar el usuario y crearlo nuevamente vía la aplicación misma para que Flask se encargue de cifrar la contraseña correctamente.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)