2013-01-03 13 views
7

già ottenuto gettone di funzionare correttamente, che è impostato in questo modo:Gestire la durata di vita token con SimpleCookie in Python

session_cookie = SimpleCookie() 
session_cookie['key'] = any_string_value 
session_cookie['key']["Path"] = '/' 

headers = [] 
headers.extend(("set-cookie", morsel.OutputString()) 
    for morsel 
    in session_cookie.values()) 

start_response(status, headers) 

Sono anche in grado di leggere il token ed estrarre le informazioni che mi servono:

# Get cookies 
cookies = request.get_cookies() 
#  Get current token from cookies 
token = cookies['token'].value 

Ora, quale sarebbe l'approccio migliore per impostare una scadenza per un biscotto, so che v'è 2 chiavi possibili:

  1. session_cookie [ 'Chiave'] [ 'max-age'] = "Tempo in secods"
  2. session_cookie [ 'chiave'] [ 'scadenza'] = "una data in futuro"

Come potrei sapere se un token è scaduto o quale potrebbe essere il modo migliore per gestire i token scaduti?

Grazie mille!

+0

Si tratta di un segno a partire dal ? Basta chiedere ... –

+0

il token è una stringa di caratteri formattati e contiene informazioni come user_id. – PepperoniPizza

+0

Tokio normale Ah. Pensavo fosse qualcosa di specifico per il Django. –

risposta

3

È possibile sapere se un token è scaduto se il token non esiste quando si tenta di ottenerlo.

token = cookies['token'].value #this will not exist 

Il browser elimina il cookie e tutto ciò che riguarda che quando la data di scadenza passa.

In molte implementazioni è possibile persino eliminare i cookie o, ad esempio, disconnettersi da un utente ma impostare la data di scadenza del cookie user_id su qualcosa nel passato (ad esempio un numero negativo).

Ora, come ho capito, è necessario un criterio per rilevare i token del server scaduti lato server e che può essere realizzato con una doppia convalida. Ad esempio, prova a memorizzare un identificativo univoco per ogni token e lato server quando leggi il token prova a verificare se è scaduto. È anche possibile che l'utente manipoli i suoi cookie in modo da non fidarsi ciecamente dei cookie per archiviare dati significativi o rendere qualsiasi user_id una semplice convalida.

Spero di averlo aiutato.

EDIT

Da rfc2109

max-age = delta-secondi opzionale. L'attributo Max-Age definisce la durata del cookie , in secondi. Il valore delta-secondi è un numero decimale non uguale a negativo. Dopo che sono trascorsi due secondi delta-secondi, il client deve eliminare il cookie. Un valore pari a zero significa che il cookie deve essere scartato immediatamente.

E da wiki http cookies

La Scade direttiva dice al browser quando per eliminare il cookie. Derivato dal formato utilizzato in RFC 1123, la data è specificata nel modulo di "Wdy, GG. Mon YYYY HH: MM: SS GMT", [29] che indica la data esatta/ora scaduto.In alternativa all'impostazione della scadenza dei cookie come data/ora assoluta, RFC 6265 consente l'utilizzo dell'attributo Max-Age per impostare la scadenza del cookie come un intervallo di secondi in futuro, in relazione al momento in cui il browser ha ricevuto il cookie.

Si consiglia di utilizzare max-age perché consente di risparmiare alcuni problemi dall'impostazione delle date, ecc. Basta calcolare un intervallo.

a leggere un po 'di più ho scoperto che max-age non è supportato da IE < 9 e ciò significa che scade è preferito

Max-Age vs Expires

che dovrebbe aiutare ;-)

+0

Grazie, il mio problema sarebbe ancora, è stato un mio errore non spiegando questo, che ogni volta che un utente registra è, riceverà un nuovo token. – PepperoniPizza

+0

Ma cosa vuoi ottenere spiegarti un po 'del tuo obiettivo o del tuo scenario di caso utente .... –

+1

@Jimme Kane - Penso che stia chiedendo come impostare la data di scadenza sul token. –

Problemi correlati