在dnx restart

时间:2016-02-29 16:54:04

标签: cookies asp.net-core asp.net-core-mvc

我在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将变为无效。想法?

1 个答案:

答案 0 :(得分:4)

身份验证Cookie已加密。除非您运行了文档中提到的配置脚本;

  

要保留数据保护密钥,您必须为其创建注册表配置单元   每个应用程序池来存储密钥。你应该使用   对于每个应用程序池,您将Provisioning PowerShell script   在。

下托管ASP.NET 5应用程序

或者您在代码中手动configured data protection,密钥将保留在内存中,并在应用停止时被丢弃。那么,您是否按照说明中的所有步骤进行了操作? :)