Las sesiones permiten guardar datos del usuario entre peticiones.
app.secret_key = "mi_clave_super_secreta"
La clave es necesaria para firmar y proteger las cookies de sesión.
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"
@app.route("/dashboard")
def dashboard():
if "usuario" in session:
return f"Bienvenido {session['usuario']}"
return redirect(url_for("login"))
@app.route("/logout")
def logout():
session.pop("usuario", None)
return redirect(url_for("login"))
def login_required(f):
def wrap(*args, **kwargs):
if "usuario" not in session:
return redirect(url_for("login"))
return f(*args, **kwargs)
return wrap
pip install werkzeug
from werkzeug.security import generate_password_hash, check_password_hash
hashed = generate_password_hash("1234")
check_password_hash(hashed, "1234") # True
/dashboard para que solo sea accesible si hay un usuario autenticado.