【问题标题】:ASP.NET MVC - Erasing session data after fer minutes of inactivityASP.NET MVC - 在 fer 分钟不活动后擦除会话数据
【发布时间】:2013-01-17 06:20:53
【问题描述】:

在我的 Web 应用程序中,我经常可以看到,当我有几分钟没有做任何事情,然后我回来并刷新页面时 - 我仍在登录,但我的会话数据全部消失了!

login() 操作中,我设置了几个Session[] 对象,这些对象是页面正常工作所必需的。我不知道它为什么会这样做,但我需要它在清除用户会话数据时注销用户。

我已阅读有关设置<sessionState mode="InProc" timeout="20"/> 的信息,但是每次我刷新页面时都会刷新此超时吗?或者它会在我登录后 20 分钟后用完?如果我让这个计时器比我保持用户在线的时间更大怎么办?

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-3


    【解决方案1】:

    回发到服务器将使会话保持更长时间。这是一个滑动到期。客户端有两种处理方式,客户端不知道这个 20 分钟超时:

    • 使用客户端 javascript 创建一个计时器,在 20 分钟后重定向到注销页面
    • 每当回发发生时,检查会话是否过期(可以通过多种方式完成,例如检查 Session.IsNewSession,查看您的对象是否丢失等),然后在处理之前重定向到注销处理程序请求。

    【讨论】:

      【解决方案2】:

      尝试检查一下:

      问:在 Proc 模式下,为什么我偶尔会丢失所有会话?

      A:请参阅“理解会话”中的“稳健性”部分 状态模式”部分。

      稳健性

      InProc - 如果工作进程会丢失会话状态 (aspnet_wp.exe) 回收,或者如果 appdomain 重新启动。这是因为 会话状态存储在 appdomain 的内存空间中。这 重启可能是由某些配置文件的修改引起的,例如 如 web.config 和 machine.config,或 \bin 目录中的任何更改 (例如使用 VS 重新编译应用程序后的新 DLL) 详细信息,请参阅 KB324772。在 v1 中,还有一个 bug 会导致 工作进程重新启动。它已在 SP2 和 v1.1 中修复。看 KB321792。

      来源 - http://forums.asp.net/t/7504.aspx/1

      【讨论】:

        【解决方案3】:

        我假设您正在使用表单身份验证。那是对的吗?如果是这样,您需要让表单身份验证票证的超时时间与会话超时时间相匹配。

        用户通过一个比最初看起来更复杂的过程保持登录状态。 cookie 存储在用户的浏览器中,称为 Forms Authentication Ticket。如果用户在会话超时限制之后保持空闲状态,服务器将丢弃会话。但在下一个请求中,Forms Authentication Ticket 将被传回 Web 服务器。服务器验证票证,如果票证仍然有效,则用户重新登录。

        如您所见,用户的会话没有恢复。如果您想要这种行为,则必须自己检测这种情况并恢复会话。

        解决方法是将Forms Authentication Ticket 的超时时间设置为与Session 的超时时间相同。您可以在 Web.config 文件中完成此操作,as explained here:

        <system.web>
            <authentication mode="Forms">
                  <forms timeout="20"/>
            </authentication>
        </system.web>
        

        超时值以分钟为单位。一旦 Forms Authentication Ticket 超时,用户将被注销。这与会话的超时无关,但如果它们相同,它们将在大致相同的时间到期。如果您想完全安全,请将 Forms Authentication Ticket 超时设置为比会话超时短一点。用户将在会话超时之前注销。当他们再次登录时,他们将获得一个新会话。旧会话最终会自行超时。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-08
          • 2011-10-18
          • 2018-06-20
          • 1970-01-01
          • 2016-05-17
          • 1970-01-01
          相关资源
          最近更新 更多