2011-02-08 14 views
18

Qual è il modo migliore per impostare una data di scadenza per il cookie JSESSIONID inviato da Tomcat per una sessione servlet?JSESSIONID Cookie con data di scadenza in Tomcat

Per impostazione predefinita, la data di scadenza del cookie sembra essere "sessione", il che significa che la sessione scompare nel client non appena il browser viene riavviato. Ma vorrei tenerlo aperto per 12 ore, anche dopo un riavvio del browser (e quindi configurare il timeout della sessione nel server di conseguenza).

C'è un modo per impostare una data di scadenza all'interno di Tomcat, ad es. usando qualche opzione di configurazione o modulo di estensione? O esiste un modo affidabile per impostare una data di scadenza per JSESSIONID utilizzando un filtro Servlet?

+0

hi Tim, Sono bloccato in un problema simile. Quale soluzione hai scelto e hai avuto successo in quello che stavi cercando di ottenere, per favore aiutaci! – Ashish

risposta

51

So che questa è una vecchia questione, ma se qualcun altro è alla ricerca di queste informazioni:

In Servlet 3.0, questo può semplicemente essere specificato in web.xml:

<session-config> 
    <session-timeout>525600</session-timeout> 
    <cookie-config> 
     <max-age>31536000</max-age> 
    </cookie-config> 
</session-config> 
+0

lo ero. grazie. –

+0

Sì, questo dimostra che non è mai troppo tardi per aggiungere nuove informazioni a una domanda, purché siano buone informazioni! Grazie, mi hai aiutato –

+2

di nuovo alcune informazioni in ritardo, ma per quanto riguarda la sessione, il tempo di attesa è in minuti, il massimo in pochi secondi! –

-2

Se si desidera sessioni scadono dopo 12 ore e sopravvivere riavvio del server, aggiungere questo al vostro web.xml:

<session-config> 
    <session-timeout>720</session-timeout> 
</session-config> 

Tomcat è configurato per impostazione predefinita per le sessioni puntate in modo che sopravvivono riavvio app. Vedi http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html#Restart%20Persistence

+5

Sfortunatamente l'unico effetto di è che il server memorizza le sessioni per 12 ore. Tuttavia nel browser il cookie è ancora impostato senza una data di scadenza e quindi scompare non appena il browser viene chiuso. –

1

Non credo sia possibile fare ciò che si desidera, senza modificare il codice Tomcat.

Nota tuttavia che potrebbe avere un effetto collaterale sgradevole: se un utente avvia una sessione e rimane attivo per dodici ore, il suo timeout di sessione verrà aggiornato di conseguenza (il timeout verrà aggiornato ad ogni richiesta), ma il suo cookie ha vinto 't, e l'utente perderà quindi la sua sessione dopo 12 ore, anche se è stato attivo per tutto questo tempo.

Problemi correlati