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