724 messaggi dal 11 febbraio 2013
Ho studiato la parte del testo dove si parla di quanto in oggetto
ho replicato il codice che funziona quasi correttamente : il Login crea i claims ma quando vengo reindirizzato all'home

User.Identity.IsAuthenticated non viene eseguito ...invece esegue il blocco else.

public async Task<IActionResult> Login(LoginViewModel login, string redirectUrl = null)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.Error = "Non hai inserito UserName e/o Password";
                return View();
            }

            var user = await GetUserByCredentials(login.UserName, login.Password);
            if (user == null)
            { 
                ViewBag.Error = "Credenziali non valide!";
                return View();
            }

            //Creiamo una ClaimsIdentity e aggiungiamo i claim dell'utente loggato
            var claimsIdentity = new ClaimsIdentity(
                authenticationType: CookieAuthenticationDefaults.AuthenticationScheme
            );
            claimsIdentity.AddClaim(new Claim(ClaimTypes.Name, user.UserName));
            claimsIdentity.AddClaim(new Claim(ClaimTypes.Role, user.Role));

            //Incapsuliamo tutto in una ClaimsPrincipal
            var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);

            //Emettiamo il cookie di autenticazione fornendo delle opzioni
            var authProperties = new AuthenticationProperties
            {
                IsPersistent = login.RememberMe
            };

            await HttpContext.SignInAsync(
              scheme: CookieAuthenticationDefaults.AuthenticationScheme,
              principal: claimsPrincipal,
              properties: authProperties);

           
            return Redirect(redirectUrl ?? "/");  //Login effettuato: indirizzo alla pagina di provenienza
        }

        private Task<User> GetUserByCredentials(string username, string password)
        {
            var user = _context.Users
                .SingleOrDefaultAsync(u => u.UserName == username
                                        && u.Password == password);
          
            return user;
        }

cosa manca
grazie

avevo dimenticato aap.UseAuthentication
ciao
Modificato da jjchuck il 03 dicembre 2018 14.36 -

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.