English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
A differenza dei cookie, i dati di sessione vengono memorizzati sul server. La sessione è l'intervallo di tempo tra il login del client al server e la disconnessione. I dati da memorizzare in questa sessione vengono memorizzati in una directory temporanea sul server.
Assegna un ID di sessione a ciascun client. I dati di sessione vengono memorizzati in un cookie in alto, e il server li firma in modo crittografato. Per questo tipo di crittografia, l'applicazione Flask ha bisogno di una definizione di SECRET_KEY.
L'oggetto sessione è anche un oggetto dizionario di tipo chiave-valore che contiene variabili di sessione e valori associati.
Ad esempio, per impostare la variabile di sessione 'username', utilizzare la seguente istruzione -
# Nome file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 Session['username'] = 'admin'
Per eliminare la variabile di sessione, utilizzare il metodo pop().
# Nome file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 session.pop('username', None)
Il seguente codice è un esempio semplice di come lavora la sessione in Flask. URL => '/' indica all'utente di accedere, poiché la variabile di sessione 'username' non è stata impostata.
# Nome file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 @app.route('/') def index(): if 'username' in session: username = session['username'] ritorna 'Connesso come ' + username + '<br>' + \ "<b><a href='/logout'>clicca qui per disconnettersi</a></b>" ritorna "Non sei connesso <br><a href='/login'></b>" + \ "clicca qui per accedere</b></a>"
Quando l'utente naviga alla URL => '/login', la funzione login() visualizza la vista perché è stata chiamata tramite metodo GET, quindi viene aperto un modulo di login.
Dopo aver compilato il modulo, rilesiona alla URL => /login, ora la variabile di sessione è impostata. L'applicazione viene reindirizzata alla URL => /. A questo punto, trovi la variabile di sessione: username.
# Nome file: example.py # Copyright: 2020 Da w3codebox # Autore: it.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> '''
L'applicazione contiene anche una funzione di vista logout(), che elimina il valore della variabile di sessione 'username'. Un ulteriore reindirizzamento URL a '/' mostra la pagina di inizio.
# Nome file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 @app.route('/logout') def logout(): # Rimuovi il nome utente dalla sessione se è presente session.pop('username', None) return redirect(url_for('index'))
Esegui l'applicazione e accedi alla pagina principale (assicurati di impostare la secret_key dell'applicazione).
# Nome file: example.py # Copyright: 2020 Da w3codebox # Autore: it.oldtoolbag.com # Data: 2020-08-08 from flask import Flask, session, redirect, url_for, escape, request app = Flask(__name__) app.secret_key = 'qualsiasi stringa casuale’
Il codice completo è riportato di seguito -
# Nome file: example.py # Copyright: 2020 Da w3codebox # Autore: it.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'] ritorna 'Nome utente loggato: ' + username + '<br>' + \ "<b><a href='/logout'>Clicca qui per disconnettersi</a></b>" ritorna "Non sei loggato, <br><a href='/login'></b>" + \ "Clicca qui per accedere</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="Accedi"/></p> </form> ''' @app.route('/logout') def logout(): # Rimuovi il nome utente dalla sessione se è presente session.pop('username', None) return redirect(url_for('index')) if __name__ == '__main__': app.run(debug=True)
L'output sarà come segue. Clicca sul link “ Clicca qui per accedere”
Questo link verrà reindirizzato a un'altra interfaccia. Inserisci ‘admin’.
Lo schermo mostrerà il messaggio “ Il nome utente per il login è:adminEcco come -