En este post de programación web con Python y Flask te enseñaré, de manera muy sencilla y fácil, cómo hacer un login y proteger una ruta para que solo accedan los usuarios que han iniciado sesión.
Básicamente vas a aprender cómo iniciar sesión en Flask y proteger todas tus rutas. Va a ser un ejemplo sencillo en donde nos vamos a enfocar solamente al manejo de sesiones y a la autenticación del usuario.
Comencemos viendo el formulario. Es simple código HTML que vamos a procesar más tarde con este microframework que es Flask:
Pon atención en la línea 19, el formulario será procesado en la ruta /hacer_login
que vamos a ver a continuación.
Fíjate que estamos mostrando los mensajes flash en caso de que existan. Estos mensajes flash sirven para dar retroalimentación al usuario. Por ejemplo, si las credenciales que ingresó son erróneas, se le indica con un mensaje.
Ahora servimos esa plantilla con Flask:
De modo que cuando el usuario visite /login
se le muestre el formulario.
Ahora vamos a ver cómo procesar ese formulario e iniciar sesión con Flask en caso de que las credenciales sean correctas.
En este caso estoy haciendo la comprobación muy fácil por simplicidad. El código queda así:
Extraemos los valores del formulario en las líneas 3 y 4. Después comparamos esas credenciales, obviamente en la vida real estoy será con una base de datos (por ejemplo SQLite3) y con las contraseñas hasheadas (con Bcrypt, por ejemplo).
En caso de que las credenciales coincidan iniciamos la sesión en la línea 9, en donde modificamos la variable session
. Y después redireccionamos al escritorio, que será una ruta protegida a la que solo se podrá acceder si se ha iniciado sesión.
Para el caso de que la contraseña o el correo no coincidan, ponemos un mensaje flash (que será mostrado en el formulario de login) y redireccionamos de nuevo al mismo.
Como te dije anteriormente, cuando se quiera acceder a cualquier ruta que esté protegida, solo los usuarios logueados podrán acceder. Para lograr esto debemos ejecutar cierto código antes de cada petición.
Flask nos permite hacer esto usando @app.before_request
, en donde podemos interceptar las rutas y hacer cierta verificación dependiendo de la ruta a la que se acceda:
Fíjate en que estamos verificando si el usuario no ha iniciado sesión con el if not 'usuario' in session
, además de que estamos comprobando la ruta, ya que las rutas permitidas sin haber iniciado sesión son /login
, /hacer_login
, etcétera.
El punto es que si se intenta acceder a una ruta protegida sin iniciar sesión, se va a redirigir al usuario al login.
Nota: recuerda que siempre puedes imprimir la variable ruta (línea 4) para depurar en caso de que tengas problemas.
Ahora veamos el código completo. Lo dejaré en GitHub para que puedas examinar todas las vistas, plantillas, código, etcétera.
Recuerda que necesitas Python y PIP. Una vez que los tengas, simplemente instala las dependencias con:
pip install flask
Ahora abre una terminal en donde se encuentra el proyecto y ejecuta:
python main.py
Finalmente visita http://localhost:8000/login y deberías tener la vista del login.
Para terminar, te dejo con más posts de programación en Python y Flask.
La impresión de un PDF en cualquier impresora se puede automatizar con un bot de…
Hoy te enseñaré cómo enviar un mensaje a un usuario desde un bot de Telegram…
El día de hoy te enseñaré algo muy sencillo pero útil al programar con PHP:…
El plugin para imprimir en impresoras térmicas alcanza hoy su versión 3.4.0 agregando soporte para…
En ocasiones es necesario leer los pixeles y colores de una imagen con JavaScript del…
Siguiendo con los tutoriales de listas desplegables o select con JavaScript, vamos a ver cómo…
Esta web usa cookies.