ASP.net身份cookie与双因素身份验证不一致

时间:2015-10-24 19:24:49

标签: asp.net authentication cookies asp.net-identity

当我设置ASP.net身份并禁用双因素身份验证时,一切似乎都按计划运行。但是,当我启用双因素身份验证时,我注意到以下不一致:

1)如果您未选中“记住我”和“记住此浏览器”,则会将身份验证Cookie创建为会话Cookie,并且不会创建记住浏览器Cookie。这可以按预期工作。

2)如果您选中“记住我”并取消选中“记住此浏览器”,则会将身份验证Cookie创建为存储的Cookie,并且不会创建记住浏览器Cookie。这可以按预期工作。

3)如果您未选中“记住我”,并选中“记住此浏览器”,则会将这两个Cookie创建为会话Cookie。这不能按预期工作。我希望“记住这个浏览器”来创建一个存储的cookie。关闭浏览器后,您必须在下次登录时使用验证码。

4)如果您同时选中“记住我”和“记住此浏览器”,则两个Cookie都会创建为存储的Cookie,有效期为2周(或CookieAuthenticationOptions Startup.Auth.cs中指定的值)。我希望能够独立于用户身份验证cookie设置浏览器cookie过期。

5)我尝试使用以下代码在VerifyCode上的AccountController操作中为浏览器Cookie手动设置更长的到期超时:

if (model.RememberBrowser)
{
    var user = await UserManager.FindByIdAsync(await SignInManager.GetVerifiedUserIdAsync());
    var rememberBrowserIdentity = AuthenticationManager.CreateTwoFactorRememberBrowserIdentity(user.Id.ToString());
    AuthenticationManager.SignIn(new AuthenticationProperties { IsPersistent = true, ExpiresUtc = DateTime.UtcNow.AddDays(365) }, rememberBrowserIdentity);
 }

这导致身份验证cookie和两个因素记住计算机cookie具有1年的到期日期。我原本期望身份验证cookie尊重配置中的值,并且记住浏览器cookie将在1年后到期。如果您注销并重新登录,则身份验证cookie会正确使用配置中的值。

有没有办法在ASP.net身份或任何解决方案中独立配置这些cookie过期?

0 个答案:

没有答案