我有一个正在使用Cookie身份验证的ASP.NET Core 1.1.2项目。我遇到一个问题,在闲置一个小时或更短的时间后,会提示用户重新登录,并丢失工作。下面的代码是我在Startup.cs的Configure函数中用来设置此代码的代码,据我所知,它至少应在8个小时后失效。顺便说一句,ProjectProcessFlow只是项目的名称。

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

我在NuGet中包含了Microsoft.AspNetCore.Authentication.Cookies v1.1.2。我需要怎么做才能使登录到期在预期的时间发生?

附加信息:

我发现,发生超时并要求用户再次登录时,在服务器上的事件查看器中记录了一条警告,提示它找不到项目下的日志文件夹。因此,我创建了该文件夹,并等待超时再次发生。发生这种情况时,将在该文件夹中创建一个包含以下内容的日志文件:
Hosting environment: Production
Content root path: C:\inetpub\wwwroot\Sprout
Now listening on: http://localhost:13423
Application started. Press Ctrl+C to shut down.

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

最佳答案



我有类似的configuration,但对我来说很好。

我能想到的一件事是您不能让Web服务器空闲20分钟。 IIS的应用程序池默认空闲超时为20分钟(对于其他Linux Web服务器,我无法说)。

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

c# - Cookie身份验证在ASP.NET Core中过早过期-LMLPHP

关于c# - Cookie身份验证在ASP.NET Core中过早过期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45595615/

10-09 22:14