1
resposta

[Dúvida] Criar uma nova variavel de sessão

Boa tarde,

Ao invés de criar essa nova variavel para comunicação com o html, eu não poderia criar uma nova variavel de sessão e armazenar a última página que eu estava para poder redirecionar de volta para ela? Assim eu utilizaria return redirect(session['ultima_pagina']), quando o login fosse um sucesso.


@app.route('/')
def index():
    session['ultima_pagina'] = '/'
    return render_template('lista.html', titulo='Jogos', jogos=lista)

@app.route('/novo')
def novo():
    session['ultima_pagina'] = '/novo'
    if 'usuario_logado' not in session or session['usuario_logado'] == None:
        return redirect('/login')
    return render_template('novo.html', titulo='Novo Jogo')

@app.route('/criar', methods=['POST',])
def criar():
    session['ultima_pagina'] = '/criar'
    nome = request.form['nome']
    categoria = request.form['categoria']
    console = request.form['console']
    jogo = Jogo(nome, categoria, console)
    lista.append(jogo)
    return redirect('/')
    # return render_template('lista.html', titulo='Jogos', jogos=lista)

@app.route('/login')
def login():
    return render_template('login.html', titulo='Login')

@app.route('/autenticar', methods=['POST',])
def autenticar():
    if 'alohomora' == request.form['senha']:
        session['usuario_logado'] = request.form['usuario']
        flash('Usuário ' + session['usuario_logado'] + ' logado com sucesso')
        return redirect(session['ultima_pagina'])
    else:
        flash('Login sem sucessso, usuário ou senha incorretos')
        return redirect('/login')
1 resposta

Fala, Leonardo, tudo bem?

Gostei da sua ideia de usar sessão para o redirecionamento após o login. O motivo pelo qual o Bruno não seguiu por este caminho é que sessões é um recurso mais caro do que query strings. O uso de variáveis de sessão exige o armazenamento do valor em uma memória específica para isso, e à medida que novas variáveis são guardadas a execução das funções de leitura/escrita será afetada. Uma query strings só vive durante aquela requisição, por isso é bem mais leve que sessões. As duas alternativas ajudam a manter o estado da aplicação entre requisições (dado que HTTP é stateless), porém uma é mais barata que a outra. Neste sentido, variáveis de sessão são recomendadas para informações críticas e que por isso não devem trafegar entre cliente e servidor.

Espero que tenha ajudado. Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software