【问题标题】:Spring/Tomcat 6 Session Expiration IssueSpring/Tomcat 6 会话过期问题
【发布时间】:2011-12-02 14:58:36
【问题描述】:

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

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

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

如果用户未经授权,我有一个 spring 安全配置可以将用户重定向回登录页面。我还有一个捕获 HttpSessionRequiredException 的 ExceptionHandler,尽管这不是在我使用户会话到期时触发的(它使用我的 Spring Security 配置的逻辑)。

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

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

例子:

  1. 用户已登录,并在主页上
  2. 用户会话过期
  3. 用户,在主页上,点击提交按钮
  4. 用户被重定向回 l​​ogin.htm 页面
  5. 用户登录并导航回主页。
  6. 不是遵循主页的 GET 逻辑,而是将它们处理为主页的 POST,我不确定 POST 变量的来源。

有没有办法追踪这个错误的来源或究竟是什么原因造成的?

【问题讨论】:

    标签: spring model-view-controller http tomcat


    【解决方案1】:

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

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

    【讨论】:

    • 效果很好。太感谢了。在阅读了 default-target-url 的文档后,我可以确切地看到它说这是导致错误的位置。
    猜你喜欢
    • 2014-04-15
    • 1970-01-01
    • 2014-11-27
    • 2013-09-06
    • 2013-06-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 2011-10-15
    相关资源
    最近更新 更多