Flask Tutorials

Passando Dados com Segurança usando a Função redirect() do Flask

Spread the love

A função redirect() do Flask é essencial para guiar usuários através do seu aplicativo web. Ela permite que você faça transições suaves de usuários para URLs diferentes após ações específicas, como envios de formulários ou logins. No entanto, simplesmente redirecionar não é sempre suficiente; você frequentemente precisa passar dados para a nova página. Este artigo explica como usar redirect() efetivamente com parâmetros em seus aplicativos Flask, focando em melhores práticas de segurança.

Sumário

Entendendo a Necessidade de Passagem de Parâmetros

A função redirect() principal não suporta inerentemente a passagem de parâmetros diretamente. Ela aceita uma URL como entrada. Para transmitir dados, você deve utilizar parâmetros de URL ou gerenciamento de sessão do lado do servidor.

Método 1: Usando Parâmetros de URL para Dados Não Sensíveis

A abordagem mais comum envolve adicionar parâmetros à URL como uma string de consulta (a parte após o ponto de interrogação ‘?’). Os parâmetros são pares chave-valor separados por ampersands (‘&’).


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"Sucesso! Nome: {name}, Idade: {age}"

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

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

Isso cria URLs como /success?name=John&age=30. url_for simplifica o manuseio de parâmetros.

Método 2: Usando Sessões Flask para Dados Sensíveis

Para dados sensíveis (IDs de usuário, tokens de autenticação), nunca use parâmetros de URL. O objeto de sessão do Flask fornece armazenamento do lado do servidor, associando dados à sessão de um usuário.


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

app = Flask(__name__)
app.secret_key = 'your_secret_key'  # SUBSTITUA por uma chave forte, gerada aleatoriamente

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        # ... lógica de autenticação ...
        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"Bem-vindo, {username}!"
    else:
        return redirect(url_for('login'))

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

Crucialmente, defina uma secret_key forte, gerada aleatoriamente. Isso é vital para a criptografia de dados de sessão.

Escolhendo o Método Certo

Use parâmetros de URL para dados não sensíveis visíveis na URL. Use sessões para dados confidenciais que devem permanecer privados.

Este guia demonstra a passagem de parâmetros segura e eficiente com a função redirect() do Flask, garantindo uma experiência de usuário suave e segura.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *