English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Sessão Session Flask

Diferente do Cookie, os dados de sessão são armazenados no servidor. A sessão é o intervalo de tempo entre o login do cliente no servidor e o logout. Os dados que precisam ser armazenados durante essa sessão são armazenados em um diretório temporário no servidor.

Atribua um ID de sessão a cada sessão do cliente. Os dados de sessão são armazenados no topo do cookie, e o servidor os assina de forma criptografada. Para essa criptografia, o aplicativo Flask precisa de um SECRET_KEY definido.

O objeto de sessão também é um objeto dicionário de chave-valor que contém variáveis de sessão e seus valores associados.

Por exemplo, para definir a variável de sessão 'username', use a seguinte declaração -

# Nome do arquivo: example.py
# Copyright: 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
Session['username'] = 'admin'

Para excluir a variável de sessão, use o método pop().

# Nome do arquivo: example.py
# Copyright: 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
session.pop('username', None)

O seguinte código é um exemplo simples de como a sessão funciona no Flask. URL => '/Avisar ao usuário para fazer login, pois a variável de sessão username não foi configurada.

# Nome do arquivo: example.py
# Copyright: 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
@app.route('/)
 def index():
    if 'username' in session:
       username = session['username']
          return 'Conectado como ' + username + "></b></a> + \
          "<b><a href="/logout'>clique aqui para sair</">/b>"
    return "Você não está logado <br><a href="/login'>/b>" + \
       "clique aqui para fazer login</b></a>"

Quando o usuário navega para URL=>'/Quando o login() é chamado, a função de vista é exibida porque é chamada via método GET, então abre um formulário de login.

Após preencher o formulário, reenvie para URL=> /login, agora a variável de sessão foi configurada. O aplicativo é redirecionado para URL=> /。 Neste momento, encontre a variável de sessão: username。

# Nome do arquivo: example.py
# Copyright: 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
@app.route('/login', methods=['GET', 'POST'])
 def login():
    if request.method == 'POST':
       session['username'] = request.form['username']
       return redirect(url_for('index'))
    return '''
    <form action="" method="post">
       <p><input type="text" name="username"/></p>
       <p><input type="submit" value="Login"/></p>
    </form>
    '''

O aplicativo também contém uma função de vista logout(), que remove o valor da variável de sessão 'username'. Nova URL saltando para '/‘ Mostra a página inicial.

# Nome do arquivo: example.py
# Copyright: 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
@app.route('/logout')
 def logout():
    # Remover o nome de usuário da sessão se estiver lá
    session.pop('username', None)
    return redirect(url_for('index'))

Execute o aplicativo e acesse a página inicial (certifique-se de configurar o secret_key do aplicativo).

# Nome do arquivo: example.py
# Copyright: 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
from flask import Flask, session, redirect, url_for, escape, request
 app = Flask(__name__)
 app.secret_key = 'any random string’

O código completo está como segue -

# Nome do arquivo: example.py
# Copyright: 2020 Por w3codebox
# Autor por: pt.oldtoolbag.com
# Data: 2020-08-08
from flask import Flask
 from flask import render_template
 from flask import request
 from flask import make_response
 from flask import Flask, session, redirect, url_for, escape, request
 app = Flask(__name__)
 app.secret_key = 'fkdjsafjdkfdlkjfadskjfadskljdsfklj'
 @app.route('/)
 def index():
     if 'username' in session:
         username = session['username']
         return 'O nome de usuário logado é:' + username + "></b></a> + \
                  "<b><a href="/sair'>Clique aqui para sair</">/b>"
     return "Você não está logado, <br><a href="/login'>/b>" + \
          "Clique aqui para fazer login</b></a>"
 @app.route('/login', methods=['GET', 'POST'])
 def login():
     if request.method == 'POST':
         session['username'] = request.form['username']
         return redirect(url_for('index'))
     return '''
    <form action="" method="post">
       <p><input type="text" name="username"/></p>
       <p><input type="submit" value="Login"/></p>
    </form>
    '''
 @app.route('/logout')
 def logout():
    # Remover o nome de usuário da sessão se estiver lá
    session.pop('username', None)
    return redirect(url_for('index'))
 if __name__ == '__main__':
     app.run(debug=True)

A saída será exibida conforme abaixo. Clique no link " Clique aqui para fazer login"

O link será redirecionado para outra interface. Digite 'admin'.

A tela exibirá a mensagem " O nome de usuário do login é: adminComo mostrado a seguir -