Flask Tutorials

Pasando Datos de Forma Segura con la Función redirect() de Flask

Spread the love

La función Flask redirect() es esencial para guiar a los usuarios a través de tu aplicación web. Permite transiciones fluidas a diferentes URLs después de acciones específicas, como envíos de formularios o inicios de sesión. Sin embargo, una simple redirección no siempre es suficiente; a menudo necesitas pasar datos a la nueva página. Este artículo explica cómo usar redirect() eficazmente con parámetros en tus aplicaciones Flask, enfocándose en las mejores prácticas de seguridad.

Tabla de Contenido

Comprendiendo la Necesidad de Pasar Parámetros

La función redirect() principal no soporta inherentemente el paso de parámetros directamente. Acepta una URL como entrada. Para transmitir datos, debes aprovechar los parámetros URL o la gestión de sesiones del lado del servidor.

Método 1: Usando Parámetros URL para Datos No Sensibles

El enfoque más común implica añadir parámetros a la URL como una cadena de consulta (la parte después del signo de interrogación ‘?’). Los parámetros son pares clave-valor separados por amperssands (‘&’).


from flask import Flask, render_template, redirect, url_for, request

app = Flask(__name__)

@app.route('/form', methods=['GET', 'POST'])
def my_form():
    if request.method == 'POST':
        name = request.form['name']
        age = request.form['age']
        return redirect(url_for('success', name=name, age=age))
    return render_template('form.html')

@app.route('/success')
def success():
    name = request.args.get('name')
    age = request.args.get('age')
    return f"¡Éxito! Nombre: {name}, Edad: {age}"

if __name__ == '__main__':
    app.run(debug=True)

<form method="POST">
    <label for="name">Nombre:</label>
    <input type="text" id="name" name="name"><br><br>
    <label for="age">Edad:</label>
    <input type="text" id="age" name="age"><br><br>
    <input type="submit" value="Enviar">
</form>

Esto crea URLs como /success?name=Juan&age=30. url_for simplifica el manejo de parámetros.

Método 2: Usando Sesiones Flask para Datos Sensibles

Para datos sensibles (IDs de usuario, tokens de autenticación), nunca uses parámetros URL. El objeto de sesión de Flask proporciona almacenamiento del lado del servidor, asociando datos con la sesión de un usuario.


from flask import Flask, render_template, redirect, url_for, request, session

app = Flask(__name__)
app.secret_key = 'your_secret_key'  # REEMPLAZAR con una clave fuerte y generada aleatoriamente

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        # ... lógica de autenticación ...
        if username == "validuser":
            session['username'] = username
            return redirect(url_for('dashboard'))
    return render_template('login.html')

@app.route('/dashboard')
def dashboard():
    username = session.get('username')
    if username:
        return f"¡Bienvenido, {username}!"
    else:
        return redirect(url_for('login'))

if __name__ == '__main__':
    app.run(debug=True)

Crucialmente, establece una secret_key fuerte y generada aleatoriamente. Esto es vital para el cifrado de datos de sesión.

Eligiendo el Método Adecuado

Usa parámetros URL para datos no sensibles visibles en la URL. Usa sesiones para datos confidenciales que deben permanecer privados.

Esta guía demuestra el paso de parámetros seguro y eficiente con la función redirect() de Flask, asegurando una experiencia de usuario fluida y segura.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *