private async Task <SignInResult> SignInOrTwoFactorAsync(TUser user, bool isPersistent, string loginProvider = null) { if (UserManager.SupportsUserTwoFactor && await UserManager.GetTwoFactorEnabledAsync(user) && (await UserManager.GetValidTwoFactorProvidersAsync(user)).Count > 0) { if (!await IsTwoFactorClientRememberedAsync(user)) { // Store the userId for use after two factor check var userId = await UserManager.GetUserIdAsync(user); Context.Response.SignIn(IdentityOptions.TwoFactorUserIdCookieAuthenticationScheme, StoreTwoFactorInfo(userId, loginProvider)); return(SignInResult.TwoFactorRequired); } } // Cleanup external cookie if (loginProvider != null) { Context.Response.SignOut(IdentityOptions.ExternalCookieAuthenticationScheme); } await SignInAsync(user, isPersistent, loginProvider); return(SignInResult.Success); }