Spring / Tomcat 6会话过期问题

时间:2011-10-06 22:12:44

标签: spring model-view-controller http tomcat

我正在使用Spring MVC作为带有本地Tomcat 6服务器的个人网页。我正在使用默认的Tomcat配置(默认情况下会设置eclipse)。

在我的控制器中(每个页面使用一个控制器,并创建会话bean以在它们之间传递信息)我有两个方法,一个用于捕获POST,另一个用于捕获GET请求方法。页面逻辑将让用户单击一个提交按钮,并使用“redirect:abc.htm”返回将它们发送到新页面或返回到GET方法。

我没有明确处理cookie,但确实拥有Session Beans中的所有信息,并使用Spring Security来处理安全性/用户管理。

我有一个spring安全配置,如果用户未获得授权,则会将用户重定向回登录页面。我还有一个ExceptionHandler捕获HttpSessionRequiredException,虽然这不是当我使用户会话到期时触发的内容(它使用我的Spring Security配置的逻辑)。

当会话过期时(我通过Tomcat管理器执行此操作),用户将被重定向回登录页面。它们在尝试执行某些操作后被重定向(单击提交,或重新访问除login.htm之外的任何页面)。

我的问题是,一旦他们回到他们的会话到期的初始页面,如果在到期时他们点击了一个提交按钮,它会将他们重定向到初始页面并从提交处理POST事件。

示例:

  1. 用户已登录,并在主页上
  2. 用户会话到期
  3. 用户,在主页面上,单击提交按钮
  4. 将用户重定向回login.htm页面
  5. 用户登录并导航回主页面。
  6. 不是遵循主页面的GET逻辑,而是将它们视为主页面的POST,我不确定POST变量的来源。
  7. 有没有办法追踪这个错误的来源或究竟是什么导致它?

1 个答案:

答案 0 :(得分:1)

这是由spring-security完成的。 Spring安全性会在将用户重定向到登录页面之前将请求详细信息存储在会话中。成功登录后,它将从会话中检索请求详细信息并重定向到该页面。

您可以设置form-login配置的always-use-default-target属性来覆盖此行为。