Cookie身份validation在ASP.NET Core中过早到期
我有一个ASP.NET Core 1.1.2项目,我在其中使用cookie身份validation。 我遇到的问题是,用户在闲置一小时或更短时间后被提示重新登录,并且失去工作。 下面的代码就是我在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。 我需要做什么才能在预期的时间内完成登录过期?
附加信息:
我发现当超时发生并且要求用户再次登录时,服务器上的事件查看器中记录了一条警告,指出它找不到项目下的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.
当我重复这个过程时,同样的事情发生了,除了在“localhost:”之后出现了一个不同的数字。 我应该提到项目名称是ProjectProcessFlow,但URL以Sprout结尾。
用户被提示在闲置一小时或更短时间后重新登录,并且失去工作。
我有类似的配置 ,但它对我来说很好。
我能想到的一件事是你不能让网络服务器闲置20分钟。 IIS的应用程序池默认空闲超时为20分钟 (我不能说其他Linux Web服务器) 。
因此,您可以设置更长的应用程序池超时(0表示无穷大) ,或者每隔5分钟从Monitis等外部服务ping 。
您是否在您的ConfigureServices方法中设置了service.AddIdentity?
services.AddIdentity(config => { // Require a confirmed email in order to log in config.SignIn.RequireConfirmedEmail = true; // Cookie settings config.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromHours(10); config.Cookies.ApplicationCookie.LoginPath = "/Account/LogIn"; config.Cookies.ApplicationCookie.LogoutPath = "/Account/LogOut"; }).AddEntityFrameworkStores().AddDefaultTokenProviders();
我遇到了类似的问题,并在此处解决了ASP.NET MVC Core Identity&Cookies
- MVC 6 Controller中的ControllerContext和ViewEngines属性在哪里?
- 如何在ASP.NET Core 1 MVC 6中为单元/集成测试模拟IFormFile?
- 如何在环境变量中正确存储连接字符串,以便通过生产ASP.Net Core MVC应用程序进行检索
- MVC .Net核心模型validation – 值”无效。 错误
- 让autofac与mvc6 beta5一起使用
- 在MVC 6中读取文件
- 对于未经身份validation的重定向到URL而不是401
- ASP.NET MVC Core / 6:多个提交按钮
- 在ASP.NET Core 2.0 Web Api中返回“raw”json