public async Task <IActionResult> LoginWith2fa(LoginWith2FaViewModel viewModel) { if (User?.Identity.IsAuthenticated == true) { return(Redirect(viewModel.ReturnUrl ?? m_returnUrlConfiguration.DefaultRedirectUrl)); } if (!ModelState.IsValid) { return(View(viewModel)); } var user = await m_signInManager.GetTwoFactorAuthenticationUserAsync(); if (user == null) { ModelState.AddModelError(m_localization.Translate("no-valid-2f-session", "LoginWith2FaViewModel")); CacheModelState(); return(RedirectToAction(nameof(Login), new { returnUrl = viewModel.ReturnUrl })); } var result = await m_signInManager.TwoFactorSignInAsync( user, viewModel.TwoFactorCode, viewModel.RememberMe, viewModel.RememberMachine, user.TwoFactorProvider ); if (result.Succeeded) { m_signInManager.DeleteTwoFactorToken(user, user.TwoFactorProvider); return(await SuccessLogin(user.UserName, viewModel.ReturnUrl)); } ModelState.AddModelError(m_localization.Translate("invalid-authenticator-code")); return(View(viewModel)); }