Servlet会话超时

时间:2010-11-08 08:11:26

标签: java servlets spring-mvc

我正在编写我的SPring MVC Web应用程序。

我已将会话时间设置为10080分钟,等于1周。 现在我想让用户每次打开浏览器时都保持登录状态:

sessionService.setcurrentUser(myuser);
      HttpSession session = request.getSession();
      Cookie cookie = new Cookie("JSESSIONID", session.getId());
      cookie.setMaxAge(timeout);
      response.addCookie(cookie);

我的Cookie Max Age应该与会话超时相同吗?

cookie.setMaxAge(10080);

这是好的做法吗?

3 个答案:

答案 0 :(得分:7)

您应该在web.xml中配置它,而不是通过黑客攻击默认会话cookie。

<session-config>
    <session-timeout>10080</session-timeout>
</session-config>

请注意,您不应在会话中存储太多数据和/或服务器有足够的内存。

答案 1 :(得分:2)

以下帖子包含有趣的信息 就良好做法而言,您可能需要考虑两件事:

  • 让会话长时间处于活动状态的安全方面。
  • 内存含义,您的会话将被序列化,并且您希望将其保持在最低限度。特别是如果用户数量可能大幅增长。

Discussion 1
Discussion 2
Discussion 3

答案 2 :(得分:1)

您使用Cookie来引用您的会话ID。如果cookie的超时低于会话,则它将不再找到您的会话。因此,建议将cookie的超时设置为至少超出会话的超时时间。