public async Task <IActionResult> MFASetup()
        {
            const string provider = "aspnetidentity";
            var          user     = await _userManager.GetUserAsync(User); //gives instance of currently logged in user

            await _userManager.ResetAuthenticatorKeyAsync(user);           //reset before generating a token

            var token = await _userManager.GetAuthenticatorKeyAsync(user);

            var qrCodeUrl = $"otpauth://totp/{provider}:{user.Email}?secret={token}&issuer={provider}&digits=6";
            var model     = new MFAViewModel {
                Token = token, QRCodeUrl = qrCodeUrl
            };

            return(View(model));
        }
        public async Task <IActionResult> MfaConfiguration()
        {
            const string provider = "aspnetidentity";
            var          user     = await _userManager.GetUserAsync(User);

            await _userManager.ResetAuthenticatorKeyAsync(user);

            var token = await _userManager.GetAuthenticatorKeyAsync(user);

            var qrCodeUrl = $"otpauth://totp/{provider}:{user.Email}?secret={token}&issuer={provider}&digits=6";
            var mfa       = new MFAViewModel {
                MfaToken = token, QrCodeUrl = qrCodeUrl
            };

            return(View(mfa));
        }
Пример #3
0
        public async Task <IActionResult> MFASetup()
        {
            const string provider = "aspnetidentity";
            var          user     = await _userManager.GetUserAsync(User);

            // Sayfa her yenilendiğinde resetleyip yeniden oluşturmalıyız.
            await _userManager.ResetAuthenticatorKeyAsync(user);

            var token = await _userManager.GetAuthenticatorKeyAsync(user);

            var qrCodeUrl = $"otpauth://totp/{provider}:{user.Email}?secret={token}&issuer={provider}&digit=6";

            var model = new MFAViewModel {
                Token = token, QRCodeUrl = qrCodeUrl
            };

            return(View(model));
        }
        public async Task <IActionResult> MFASetup(MFAViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.GetUserAsync(User);

                var succeeded = await _userManager.VerifyTwoFactorTokenAsync(user, _userManager.Options.Tokens.AuthenticatorTokenProvider, model.Code);

                if (succeeded)
                {
                    await _userManager.SetTwoFactorEnabledAsync(user, true);  //enable two factor authentication
                }
                else
                {
                    ModelState.AddModelError("Verify", "Your MFA code could not be validated.");
                }
            }
            return(View(model));
        }
        public async Task <IActionResult> MfaConfiguration(MFAViewModel mfa)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.GetUserAsync(User);

                var result = await _userManager.VerifyTwoFactorTokenAsync(user, _userManager.Options.Tokens.AuthenticatorTokenProvider, mfa.MfaCode);

                if (result)
                {
                    var auth = await _userManager.SetTwoFactorEnabledAsync(user, true);

                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    ModelState.AddModelError("Validate", "Your MFA code is invalid");
                }
            }
            return(View(mfa));
        }