PDA

View Full Version : [generale] HTTP session manager - come comportarsi quando la sessione è scaduta?


lmaoing
14-03-2011, 22:09
Ciao a tutti,
stò implementando un session manager.

Attualmente il session manager genera un id pseudorandom, controlla se non è già esistente un file con lo stesso nome (e se lo trova rigenera l'id), e se non è presente crea il file in questione.

Il linguaggio non è necessario ai fini della domanda, ma per completezza premetto che lo stò realizzando in Python.

Riguardo ai settaggi del cookie per contenere il SID ho seguito l'RFC 2965.
Non ho impostato alcuna scadenza creando di fatto un session cookie.
Suddetto documento dice che a scadenza della sessione, il cookie dovrebbe essere rinviato al client con Max-Age=0, facendo scadere il cookie in modo che il client non lo invia più. Aggiungo che il cookie è di tipo httponly.

Però IE non supporta Max-Age.

Poichè ho comunque la necessità di eliminare il file lato server effettuo un controllo lato server, in base alle configurazioni interne che decidono la durata massima della sessione, controllo ogni volta che viene ripresa la sessione se la data di creazione + durata espressa in secondi sia inferiore al timestamp attuale. In questo modo posso sapere quali sessioni sono scadute.

Agisto quindi inviando al client lo stesso cookie ma con una Expires nel passato, così da invalidarlo ed elimino il file.
NON rigenero all'istante la sessione, ma aspetto una nuova chiamata al metodo Start() per farlo.

Le mie domande sono queste.
*) Mandare un cookie con Expires nel passato funziona su tutti i browser senza dover aspettare la fine sessione?
*) Quando intercetto la scadenza della sessione, dovrei istantaneamente rigenerarla (con il nuovo SID) o è corretto aspettare una nuova chiamata al metodo che la inizializza?

Grazie.

lmaoing
16-03-2011, 13:13
Ho risolto :)

Evitano il max-age, uso il parametro expires con una data del passato, essendo una direttiva dello standard, mandare un cookie scaduto violerebbe lo standard stesso, e quindi non sarebbe un problema mio (e immagino quindi che tutti i browser si attengano allo standard rfc -più che altro i loro motori, che sono meno dei browser in circolazione-).

Riguardo il comportamento dopo la scadenza del cookie ho preferito far avviare subito una nuova sessione, in questo modo è subito possibile lavorare su una nuova sessione.