我在ASP.NET MVC6应用程序中使用cookie身份验证。我的配置如下:
app.UseCookieAuthentication(options =>
{
options.CookieName = "ow.2a";
options.ReturnUrlParameter = "r";
options.AuthenticationScheme = "TwoFactor";
options.ExpireTimeSpan = TimeSpan.FromHours(4.0);
options.SlidingExpiration = true;
options.AccessDeniedPath = new PathString("/login");
options.LoginPath = new PathString("/login");
options.AutomaticAuthenticate = true;
options.AutomaticChallenge = true;
});
这是我的登录代码:
await HttpContext.Authentication.SignInAsync("TwoFactor",
new ClaimsPrincipal(new ClaimsIdentity(new[]
{ new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()) }, "Password")),
new AuthenticationProperties { IsPersistent = true, ExpiresUtc = DateTime.UtcNow.AddHours(4.0) });
我注意到每隔一段时间(大约15分钟),我就注意到我已经注销了。我已跟着these instructions在IIS上托管我的应用程序。问题似乎与dnx进程重启有关。我可以理解在一段时间不活动后关闭此过程,但不知道为什么身份验证cookie将变为无效。想法?
答案 0 :(得分:4)
身份验证Cookie已加密。除非您运行了文档中提到的配置脚本;
要保留数据保护密钥,您必须为其创建注册表配置单元 每个应用程序池来存储密钥。你应该使用 对于每个应用程序池,您将Provisioning PowerShell script 在。
下托管ASP.NET 5应用程序
或者您在代码中手动configured data protection,密钥将保留在内存中,并在应用停止时被丢弃。那么,您是否按照说明中的所有步骤进行了操作? :)