【问题标题】:Preserving state after HTTP session time out在 HTTP 会话超时后保留状态
【发布时间】:2012-08-31 13:56:59
【问题描述】:

在我的 asp.net 应用程序中,HTTP 会话在用户被重定向到登录页面的 30 分钟后超时。这是一个场景:

  1. 用户单击要编辑的项目,URL 如下:

    http://localhost/app/edit?id=1

  2. 用户在页面上进行了某些更改以编辑 id=1 的项目,但在 30 分钟内没有“保存”它们。

  3. 在第 31 分钟,他单击保存并重定向到登录页面,如果他输入正确的凭据,我有一个返回 URL 可以重定向到该页面。

保留用户离开页面的状态的正确方法是什么? 我所拥有的只是登录请求的返回 URL,它看起来像:http://localhost/app/edit

单击保存会发出POST 请求,但不会在查询字符串中传递任何内容。

我希望能够重定向到http://localhost/app/edit?id=1

【问题讨论】:

    标签: asp.net asp.net-mvc session-state


    【解决方案1】:

    除非您专门构建了一种机制来保存状态在 ASP.NET 基于会话的状态机制之外,否则会话在超时时会丢失。从理论上讲,您可以构建一个状态系统,该系统在每个用户 ID 的基础上存储来自选定页面/输入的数据中间草稿,其中可以检索包含可能以这种方式“孤立”的数据的页面,但这也需要在那些被认为足够重要的页面上将数据定期后台保存回数据库,以保留因超时而丢失的更改。

    【讨论】:

    • 我也是这么想的。这太极端了,无法保证您描述的努力。
    • 我认为大多数 Web 开发人员在类似情况下都会得出相同的结论,除非某些非常具体的情况/案例需要额外的工作。这是基于浏览器的应用程序与专用桌面应用程序相比的一个明显缺点,不幸的是,用户并不总是理解这一点......
    【解决方案2】:

    当 POST 发生时,您拥有原始 URL,以及带有所有表单值的请求对象。

    请求将被拦截,并重定向到登录屏幕。此时,您需要保存原始 URL 和请求值,处理登录,然后使用原始值重定向到原始 URL。

    您的 POST 请求是什么样的?是否有可以放入临时存储(会话等)的对象,或者您是否处理表单集合?

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 2011-10-11
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多