【问题标题】:How to automatically logout when user idle time is 5 mins in MVC4?如何在 MVC4 中用户空闲时间为 5 分钟时自动注销?
【发布时间】:2013-05-15 21:16:41
【问题描述】:

如何自动

FormsAuthentication.SignOut();
Session.RemoveAll();
return RedirectToAction("Login", "Home");

当用户空闲时间在 MVC4 项目中为 5 分钟?

【问题讨论】:

  • 5 分钟真的很短。
  • 你还需要定义什么是“空闲”?五分钟内根本没有请求?
  • @AdrianGodong 是的,五分钟内根本没有请求。

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


【解决方案1】:

根据您对空闲的定义,您似乎可以通过使用 FormsAuthentication 类的 SlidingExpirationTimeout 属性来做到这一点。

将 Timeout 设置为 5 分钟,将 SlidingExpiration 设置为 true,您应该一切顺利。

【讨论】:

    【解决方案2】:

    您应该在 IIS 级别执行此操作。

    在 IIS 中,您可以随时设置会话超时。

    technet 上的这篇文章向您解释了如何做到这一点: http://technet.microsoft.com/en-us/library/cc725820(v=ws.10).aspx

    注意:用户只有在执行其他操作后(会话结束时)才会被重定向到登录页面

    【讨论】:

      【解决方案3】:

      如果您希望在 5 分钟后也隐藏登录的内容,那么您可以将 Kenneths 的答案与每个页面上的小 javascript 结合起来。

      setTimeout(function () { 
          // iis will handle the rest.
          location.reload(); 
      }, 300000);
      

      【讨论】:

      • 如果你这样做,它必须是服务器启动的。此外,用户不会喜欢这种形式的输入。
      • 必须由服务器启动的“它”是什么?表单身份验证本身将在重新加载时注销并重定向到 loginurl(如果需要)并保留 returnulr。用户到底不喜欢什么?那是他们闲着的时候。他们的页面会自动注销?个人数据呢?您是否希望任何其他人在您离开并忘记退出的地方看到您的页面?
      • “它”是指服务器注销。页面不应该只是在设置超时后重新加载,因为正如我所说,用户会丢失输入。例如,它可以轮询服务器用户是否仍然登录,如果没有,则在页面上放置“请再次登录”覆盖。
      猜你喜欢
      • 2011-10-14
      • 2019-03-17
      • 2013-04-17
      • 2020-12-27
      • 2019-07-02
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 2021-02-06
      相关资源
      最近更新 更多