MVC 5注销超时

时间:2014-06-29 18:54:16

标签: asp.net-mvc entity-framework authentication logout

要求用户每20分钟左右登录一次。

其中一种不知道在哪里看的情况。我正在使用C#MVC 5 IdentityFramework 1.0.0

我希望将超时时间设为4小时。

直到现在我已经尝试过web.config:

<system.web>
  <sessionState timeout="2880"></sessionState>
      <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
  </authentication>
</system.web>

并在Startup.Auth.sc中:

app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            ExpireTimeSpan = TimeSpan.FromHours(4),
            CookieSecure = CookieSecureOption.Never,
            CookieHttpOnly = false,
            SlidingExpiration = true,
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/Account/Login")
        });

我错过了什么?

编辑 - 解决方案

解决方案是将machineKey放在system.web下的web.config中。密钥生成器可以找到http://aspnetresources.com/tools/machineKey

我还迁移到了Identity 2.0并保留了这些设置。使用此博客作为guid迁移:http://typecastexception.com/post/2014/07/13/ASPNET-Identity-20-Extending-Identity-Models-and-Using-Integer-Keys-Instead-of-Strings.aspx

2 个答案:

答案 0 :(得分:2)

即使您在本地运行该网站,是否会发生这种情况?看一下描述类似案例的this blog post

博客文章的重点是:

  

...请记住,Forms Authentication使用计算机的machineKey   加密表单身份验证cookie。 &#34;机器钥匙可以吗?   在我的共享托管服务器上随时间变化?&#34;,我想知道。

     

在通过电子邮件发送询问之前,我查看了MSDN上的文档   machineKey并发现可以使用AutoGenerate模式   设置为每次主机进程为a时重新生成一个新的machineKey   网络应用程序启动... 20分钟不活动后!啊哈!

答案 1 :(得分:0)

确保您没有任何后台ajax活动,因为它会影响会话(默认情况下SlidingExpiration为true)。此外,您必须在将ExpireTimeStamp从默认的14天更改为较小的值后手动删除旧的Cookie。