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

ASP.net身份cookie与双因素身份验证不一致,asp.net,authentication,cookies,asp.net-identity,Asp.net,Authentication,Cookies,Asp.net Identity,当我设置ASP.net身份并禁用双因素身份验证时,一切似乎都按计划进行。但是,当我启用双因素身份验证时,我注意到以下不一致: 1) 如果未选中“记住我”和“记住此浏览器”,则会将身份验证cookie创建为会话cookie,而不会创建记住浏览器cookie。这正如预期的那样有效 2) 如果选中“记住我”并未选中“记住此浏览器”,则会将身份验证cookie创建为存储的cookie,而不会创建记住浏览器cookie。这正如预期的那样有效 3) 如果未选中“记住我”并选中“记住此浏览器”,则两个cook

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

1) 如果未选中“记住我”和“记住此浏览器”,则会将身份验证cookie创建为会话cookie,而不会创建记住浏览器cookie。这正如预期的那样有效

2) 如果选中“记住我”并未选中“记住此浏览器”,则会将身份验证cookie创建为存储的cookie,而不会创建记住浏览器cookie。这正如预期的那样有效

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

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

5) 我尝试使用以下代码在
AccountController
上的
VerifyCode
操作中手动为浏览器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 Identity中独立配置这些cookie过期,或者其他解决方法?

五年后的2021年,我仍然面临同样的问题。。。