繁体   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