MVC 5 注销超时

Posted

技术标签:

【中文标题】MVC 5 注销超时【英文标题】:MVC 5 Logout timeout 【发布时间】:2014-08-20 04:17:52 【问题描述】:

要求用户每 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 并保留了这些设置。使用此博客作为指导进行迁移:http://typecastexception.com/post/2014/07/13/ASPNET-Identity-20-Extending-Identity-Models-and-Using-Integer-Keys-Instead-of-Strings.aspx

【问题讨论】:

您实际面临的问题是什么? 要求用户每 20 分钟左右登录一次。 您的问题解决了吗?我对解决方案感兴趣 问题已更新为解决方案。感谢提示解决方案 按说的工作:) 【参考方案1】:

即使您在本地运行网站也会发生这种情况吗?看看this blog post描述的类似案例。

博客文章的要点是:

...记住 Forms Authentication 使用计算机的 machineKey 加密表单身份验证 cookie。 “机器钥匙能不能 在我的共享托管服务器上随时间变化?”,我想知道。

在给他们发邮件询问之前,我查看了 MSDN 上的文档 machineKey 发现有一个 AutoGenerate 模式可以 设置为每次主机进程重新生成一个新的 machineKey Web 应用程序启动...在 20 分钟 不活动后!啊哈!

【讨论】:

【参考方案2】:

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

【讨论】:

我不这么认为。我有很少的 Ajax 请求,但只是针对这里和那里的表单。那么切换到会话或数据库而不是 cookie 是否更聪明?

以上是关于MVC 5 注销超时的主要内容,如果未能解决你的问题,请参考以下文章

无法注销身份 MVC 5 应用程序

微软身份提供者和 .net 核心的注销重定向 url (5) MVC

使用自定义 ActionFilterAttribute 在 MVC 5 中注销用户

从 ASP.NET MVC 客户端应用程序和 .NET 5 openiddict 服务器注销。注销后重定向 URL 无效

MVC 5、WIF (System.IdentityModel) 和 ADFS 未实际进行身份验证,联合注销时出错

用户在 ASP .NET MVC 5 中注销时如何清除所有会话元素?