2015-08-19 14 views
14

sto usando:estensione Flask-Session vs sessione predefinita

from flask import session 

@app.route('/') 
def main_page(): 
    if session.get('key'): 
     print ("session exist" + session.get('key')) 
    else: 
     print ("could not find session") 
     session['key'] = '34544646###########' 
    return render_template('index.html') 

Non ho installato l'estensione Flask-Session, ma questo funziona ancora bene. Sto cercando di capire perché e quando quell'estensione mi ha colpito. Per quanto vedo, la sessione predefinita funziona bene per me.

+0

buona domanda - anche io ho avuto una domanda simile .. #following – sudhishkr

risposta

20

La differenza è dove i dati di sessione sono memorizzati.

Le sessioni del pallone sono sessioni lato client. Tutti i dati che scrivi alla sessione vengono scritti su un cookie e inviati al client per l'archiviazione. Il client invierà i cookie al server con ogni richiesta, ovvero in che modo i dati che scrivi nella sessione rimangono disponibili nelle richieste successive. I dati memorizzati nel cookie sono crittografati per evitare manomissioni. L'impostazione SECRET_KEY dalla tua configurazione viene utilizzata per generare la firma, quindi i dati nelle sessioni sul lato client sono protetti fino a quando la tua chiave segreta viene mantenuta privata. Notare che protetto in questo contesto significa che i dati nella sessione non possono essere modificati da un potenziale utente malintenzionato. I dati sono ancora visibili a chiunque sappia come guardare, quindi non si dovrebbero mai scrivere informazioni sensibili in una sessione lato client.

Flask-Session e Flask-KVSession sono due estensioni per Flask che implementano le sessioni lato server sul lato server. Queste sessioni funzionano esattamente allo stesso modo delle sessioni native di Flask dal punto di vista dell'applicazione, ma memorizzano i dati nel server. I dati non vengono mai inviati al client, quindi c'è un po 'di maggiore sicurezza. Il client continua a ricevere un cookie firmato, ma l'unico dato nel cookie è un ID di sessione che fa riferimento al file o all'indice del database nel server in cui sono archiviati i dati.

+1

grazie per il chiarimento. Vorrei che lo spiegassero meglio nella documentazione. – Ankit

+0

L'unico motivo per utilizzare una sessione lato server è quando si memorizzano dati sensibili nella sessione? –

+0

Possiamo creare implementare il nostro 'SessionInterface' e far sì che le sessioni vengano archiviate sul Server. Ad esempio, un [redis store] (http://flask.pocoo.org/snippets/75/). Qual è la differenza tra questo e l'uso di 'flask-session'? –

Problemi correlati