簡體   English   中英

會話到期時間?

[英]Session expiry times?

我已在我的應用程序上啟用了會話:

// appengine-web.xml
<sessions-enabled>true</sessions-enabled>

當我在網域下加載不同的頁面時,它們似乎起作用。 但是,如果我關閉瀏覽器,會話似乎已終止。 重新啟動瀏覽器顯示上一個會話不再可用。

很好,只是想知道是否在任何地方都有記錄,因此我可以依靠這個事實嗎?

我嘗試了以下方法來測試我們是否可以對其進行調整:

// in web.xml
<session-config>
    <session-timeout>10</session-timeout>
</session-config>

// in my servlet
getThreadLocalRequest().getSession().setMaxInactiveInterval(60 * 5);

但行為相同,瀏覽器重啟后會話數據將不再可用。

我查看了項目的統計信息,發現數據正在用於“ _ah_SESSION”對象之類的東西。 這些是從上面來的嗎? 如果是這樣,難道不應該清洗它們,因為它們不再有效了嗎? (希望gae能自動處理該問題?)

謝謝

使用Google帳戶,會話有效期實際上是在App Engine管理控制台中處理的,而不是通過Java處理的。 通過http://appengine.google.com/登錄到您的管理控制台,然后選擇“應用程序設置”,然后將“ Cookie有效期”更改為最適合您的時間段。

會話就是這樣工作的。 JSESSIONID通常在HTTP中保存會話ID。 當瀏覽器關閉會話時,會話仍在服務器中保持活動狀態,並且所有過期的會話將在一段時間后釋放。
當您重新打開一個新的瀏覽器會話時,瀏覽器對以前的任何會話都不了解,因此創建了一個新的會話。
有解決方法...
-創建一個Cookie
-將唯一變量存儲在隱藏的表單字段中並使用它。
-URL重寫

默認情況下,Jetty *設置JSESSIONID cookie(基於會話),這意味着它將在您的瀏覽器關閉后被刪除。 再次打開瀏覽器時,將創建一個新的JSESSIONID cookie,並且先前的會話上下文將丟失。

如果您想讓Cookie保持更長時間有效,則只需在web.xml上添加以下配置即可:

設置Cookie到期時間

<context-param>
    <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
    <!-- amount of seconds (1 month in this case) -->
    <param-value>2592000</param-value> 
</context-param>

另外,您應該讓Google知道將會話保留在_ah_SESSION中多長時間

設置會話過期時間

<session-config>
    <!-- minutes of inactivity: (1 month in this case) -->
    <session-timeout>43200</session-timeout>   
</session-config>

*其他Jetty配置可在以下位置找到: https//wiki.eclipse.org/Jetty/Howto/SessionIds

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM