【发布时间】:2017-08-09 16:02:58
【问题描述】:
我有一个使用 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 结尾。
【问题讨论】:
-
这只是一个猜想,但可能是相关的,您是否也启用了会话?通过
services.AddSession? -
是的,在 Startup.cs 中同时调用了 AddSession 和 UseSession
-
你的 web.config 文件中也应该有一个设置。
-
你能详细说明一下吗?
标签: c# authentication asp.net-core-mvc