Misión 3 · Lección 7

Autenticación y Manejo de Sesiones en Flask

Objetivos

¿Qué son las Sesiones?

Las sesiones permiten guardar datos del usuario entre peticiones.

Configurar clave secreta

app.secret_key = "mi_clave_super_secreta"

La clave es necesaria para firmar y proteger las cookies de sesión.

Ejemplo de Login Básico

from flask import request, session, redirect, url_for

@app.route("/login", methods=["POST"])
def login():
    usuario = request.form["usuario"]
    clave = request.form["clave"]
    if usuario == "admin" and clave == "1234":
        session["usuario"] = usuario
        return redirect(url_for("dashboard"))
    return "Credenciales inválidas"

Acceder a la Sesión

@app.route("/dashboard")
def dashboard():
    if "usuario" in session:
        return f"Bienvenido {session['usuario']}"
    return redirect(url_for("login"))

Cerrar Sesión

@app.route("/logout")
def logout():
    session.pop("usuario", None)
    return redirect(url_for("login"))

Proteger Rutas

def login_required(f):
    def wrap(*args, **kwargs):
        if "usuario" not in session:
            return redirect(url_for("login"))
        return f(*args, **kwargs)
    return wrap

Almacenamiento de Contraseñas

pip install werkzeug
from werkzeug.security import generate_password_hash, check_password_hash

hashed = generate_password_hash("1234")
check_password_hash(hashed, "1234")  # True

Buenas Prácticas

Ejercicio Guiado

  1. Implementa un formulario de login con usuario y contraseña.
  2. Guarda el usuario en la sesión al iniciar sesión correctamente.
  3. Protege una ruta /dashboard para que solo sea accesible si hay un usuario autenticado.
  4. Agrega un botón de “Cerrar sesión”.