35 messaggi dal 30 gennaio 2014
Buongiorno.
Per questioni di localizzazione ho preso da un repository un "sample" con autenticazione invece che tramite Razor Pages (effettuando il classico scaffolding di Identity) tramite MVC.
Funziona bene la parte basica, però poi ci ho voluto aggiungere la 2FA e qui ci casca l'asino, perchè spostando codice dallo scaffolding verso il mio controller nel momento in cui questo arriva al redirect di fatto non lo esegue e non riesco a capire perchè.
Ad ogni buon fine allego estratti del codice:
// POST: /Account/Login
        [HttpPost]
        [AllowAnonymous]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if(ModelState.IsValid)
            {
                // This doesn't count login failures towards account lockout
                // To enable password failures to trigger account lockout, set lockoutOnFailure: true
                var result = await _signInManager.PasswordSignInAsync(model.UserName, model.Password, model.RememberMe, lockoutOnFailure: false);
                if(result.Succeeded)
                {
                    _logger.LogInformation(1, "User logged in.");
                    return RedirectToLocal(returnUrl);
                }
                if(result.RequiresTwoFactor)
                {
                    return RedirectToAction("LoginWith2FA", new { RemMe = model , ReturnUrl = returnUrl });
                }
                if(result.IsLockedOut)
                {
                    _logger.LogWarning(2, "User account locked out.");
                    return View("Lockout");
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                    return View(model);
                }
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }
// GET: /Account/LoginWith2FA
        [HttpGet]
        public async Task<IActionResult> LoginWith2FA(LoginViewModel RemMe, string returnUrl = null)
        {
            // Ensure the user has gone through the username & password screen first
            var user = await _signInManager.GetTwoFactorAuthenticationUserAsync();

            if(user == null)
            {
                throw new InvalidOperationException($"Unable to load two-factor authentication user.");
            }

            ViewData["ReturnUrl"] = returnUrl;


            return View(RemMe);
        }


Di fatto mi viene restituita la pagina di login con questo URL: http://localhost:55666/Account/Login?ReturnUrl=%2FAccount%2FLoginWith2FA%3FRemMe%3DWaseNet.Models.AccountViewModels.LoginViewModel%26ReturnUrl%3DHome%252FIndex

Se mi sapete dare qualche dritta ve ne sarei grato...

Valter
35 messaggi dal 30 gennaio 2014
Santa polenta, l'ABC....
Se non uso [AllowAnonymous] col piffero che funziona.
Scusate il disturbo...

Valter

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.