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

Sessione di Flask

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 -