2011-02-08 391 views
18

爲Tomcat發送的JSESSIONID Cookie爲servlet會話設置過期日期的最佳方式是什麼?JSESSIONID在Tomcat中過期日期的Cookie

默認情況下,Cookie的過期日期似乎是'會話',這意味着只要瀏覽器重新啓動,會話就會在客戶端中消失。但我希望在瀏覽器重新啓動後保持打開狀態12小時(然後會相應地在服務器中配置會話超時)。

有什麼方法可以在Tomcat中設置過期日期,例如:使用一些配置選項或擴展模塊?還是有一種可靠的方法來設置使用Servlet過濾器JSESSIONID的到期日期?

+0

喜添,我陷入了類似的問題。您選擇了哪種解決方案,並且您在嘗試實現目標方面取得了成功,請大家幫忙! – Ashish 2011-03-15 13:31:50

回答

51

我知道這是一個老問題,但如果其他人正在尋找這樣的信息:

在Servlet的3.0,這可以簡單地在web.xml中指定:

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

我是。謝謝。 – 2012-07-20 05:22:42

-2

如果你想會話12小時後失效和生存服務器重新啓動,將它添加到你的web.xml:

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

Tomcat的默認配置,使他們生存的應用程序重新啓動,以連載的會話。請參閱http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html#Restart%20Persistence

+5

不幸的是,的唯一影響是服務器將會話存儲了12小時。但是,在瀏覽器中,Cookie仍然沒有過期日期,因此只要瀏覽器關閉就會消失。 – 2011-02-08 13:13:04

1

我不認爲可以在不更改Tomcat代碼的情況下執行所需操作。

但請注意,它可能有一個令人討厭的副作用:如果用戶啓動一個會話並保持活動十二小時,其會話超時將相應更新(超時將在每個請求更新),但其餅乾獲勝那麼即使他在這段時間內一直處於活動狀態,用戶將在12小時後失去會話。