Session 我们如何扩展单个用户';s会话到期时间?
我在web.xml中这样做是为了调节整个会话过期时间:Session 我们如何扩展单个用户';s会话到期时间?,session,lift,web.xml,session-timeout,Session,Lift,Web.xml,Session Timeout,我在web.xml中这样做是为了调节整个会话过期时间: <session-config> <session-timeout>10</session-timeout> </session-config> 我希望这段代码能让所有SessionVar保持2周的有效期。不幸的是,它不起作用。我们该怎么做呢?乍一看,我觉得这是个坏主意,而且在我看来,您最好使用某种类型的缓存。在为期两周的课程到期后,你想要完成什么?另外,Lift的SessionVa
<session-config>
<session-timeout>10</session-timeout>
</session-config>
我希望这段代码能让所有SessionVar保持2周的有效期。不幸的是,它不起作用。我们该怎么做呢?乍一看,我觉得这是个坏主意,而且在我看来,您最好使用某种类型的缓存。在为期两周的课程到期后,你想要完成什么?另外,Lift的
SessionVar
不会直接存储在会话中,因为Scala函数和其他可能放在那里的项是不可序列化的。如果您想直接使用HttpSession
-有ContainerVar
。那么,这是否意味着只要我使用ContainerVar,上面的代码就可以正常工作?同样,由于不知道您希望实现什么,我无法确定它是否“正常工作”。但是,如果您使用ContainerVar
,您将拥有一个绑定到servlet容器会话的机制。但是,您需要提供自己的序列化程序,以便Lift可以将数据序列化到容器中。它还假设您的容器支持持续2周的会话,并且不存在内存或垃圾收集问题。但是,如果servlet容器能够支持它,那么将SessionVar
更改为ContainerVar
并实现序列化程序应该可以。
S.session match {
case Full(session) => {
session.httpSession match {
case Full(httpSession) => httpSession.setMaxInactiveInterval(2 * 7 * 24 * 60 * 60)
case _ => log.error("There is no HttpSession in the session")
}
}
case _ => log.error("There is no LiftSession in S.session")
}