Cookie身份验证在ASP.NET Core中过早到期

Ron*_*ono 8 c# authentication asp.net-core-mvc

我有一个ASP.NET Core 1.1.2项目,我在其中使用cookie身份验证.我遇到一个问题,即在闲置一小时或更短时间后,用户被提示重新登录,并失去工作.下面的代码是我在Startup.cs的Configure函数中使用的代码来设置它,我可以告诉它,它应该在至少8小时后到期.BTW,ProjectProcessFlow只是项目的名称.

  app.UseCookieAuthentication(new CookieAuthenticationOptions()
  {
    AuthenticationScheme = "ProjectProcessFlow",
    LoginPath = new PathString("/Account/Login/"),       
    ExpireTimeSpan = new TimeSpan(8, 0, 0),
    SlidingExpiration = true,
    AutomaticAuthenticate = true,
    AutomaticChallenge = true
  });
Run Code Online (Sandbox Code Playgroud)

我在NuGet中包含了Microsoft.AspNetCore.Authentication.Cookies v1.1.2.我需要做什么才能在预期的时间内完成登录过期?

附加信息:

我发现当超时发生并且要求用户再次登录时,服务器上的事件查看器中记录了一条警告,指出它找不到项目下的logs文件夹.所以我创建了该文件夹,并等待超时再次发生.发生这种情况时,在该文件夹中创建了一个包含以下内容的日志文件:

Hosting environment: Production
Content root path: C:\inetpub\wwwroot\Sprout
Now listening on: http://localhost:13423
Application started. Press Ctrl+C to shut down.
Run Code Online (Sandbox Code Playgroud)

当我重复这个过程时,同样的事情发生了,除了在"localhost:"之后出现了一个不同的数字.我应该提到项目名称是ProjectProcessFlow,但URL以Sprout结尾.

moj*_*imi 10

我知道回答这个问题为时已晚,但面对这个问题的是谁。IIS 重置池每 20 分钟和每 20 分钟 ASP.NET 生成用于保护 cookie 值(身份验证和会话)的新密钥。为了防止这种情况,ConfigureServicesStartup课堂上添加以下代码

services.AddDataProtection()
                .PersistKeysToFileSystem(new System.IO.DirectoryInfo("SOME WHERE IN STORAGE"))
                //.ProtectKeysWithCertificate(new X509Certificate2());
                .SetDefaultKeyLifetime(TimeSpan.FromDays(90));
Run Code Online (Sandbox Code Playgroud)

完整指南在这里。这都是关于DataProtection


Win*_*Win 7

系统会提示用户在闲置一小时或更短时间后重新登录并失去工作。

我有类似的配置,但它对我来说很好用。

我能想到的一件事是你不能让网络服务器闲置 20 分钟。IIS 的应用程序池默认空闲超时为 20 分钟 (我不能说其他 Linux Web 服务器)

因此,您可以设置更长的应用程序池超时(0 表示无穷大),或者每 5 分钟从Monitis等外部服务 ping 一次。

在此处输入图片说明