我有一个正在使用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中过早过期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45595615/