public async Task <IActionResult> MFASetup() { string provider = "AspIdentity"; var user = await _userManager.GetUserAsync(User); await _userManager.ResetAuthenticatorKeyAsync(user); var token = await _userManager.GetAuthenticatorKeyAsync(user); var qrCodeUrl = $"otpauth://topt/{provider}:{user.Email}?secret={token}&issuer={provider}&digits=6"; var model = new MFASetupViewModel() { Token = token, QrCodeUrl = qrCodeUrl }; return(View(model)); }
public async Task <IActionResult> MFASetup(MFASetupViewModel model) { if (ModelState.IsValid) { var user = await _userManager.GetUserAsync(User); var succeed = await _userManager.VerifyTwoFactorTokenAsync(user, _userManager.Options.Tokens.AuthenticatorTokenProvider, model.Code); if (succeed) { await _userManager.SetTwoFactorEnabledAsync(user, true); return(RedirectToAction("index", "Home")); } else { ModelState.AddModelError("MFA setup", "MFA could not be validated"); } } return(View(model)); }