902 messaggi dal 11 febbraio 2013
ciao
non so se effettivamente il problema sia TempData ma se pubblico l'app non riesco a ritornare il valore
che imposto

Vorrei ritornare il nome dell'utente loggato e passarlo all'home controller
Una volta che l'homeController prende il valore da TempData lo passa al viewModel e da qui lo assegno
ad un input hidden che poi salvo in un localStorage

Se lancio l'app in Production in localhost funziona benissimo

In produzione no! non ho errori di alcun tipo



        public async Task<IActionResult> Login(LoginViewModel login, string redirectUrl = null)
        {
var user = await GetUserByCredentials(login.UserName, login.Password);
     var claimsIdentity = new ClaimsIdentity(
               ...); 
            var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
            var authProperties = new AuthenticationProperties
            {
                IsPersistent = login.RememberMe
            };

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

            TempData["UserName"] = user.UserName;

            if (user.Role == "Admin")
                return RedirectToAction("Index", "AdminHome", new { area = "Admin" });
            else
                return LocalRedirect(redirectUrl ?? "/");
}

public class HomeController : Controller
    {
        public IActionResult Index()
        {
            string userName = "Nome";
          
            if (TempData["UserName"] != null)
                userName = (string)TempData["UserName"];
          
            var model = new HiddenModel { NomeUtente = userName };
            return View("Index", model);
        }
}

//index.cshtml
@model HiddenModel

<input type="hidden" value="@Model.NomeUtente" id="user">

<div id="app-root"> 
    Loading...<i class="fas fa-spinner fa-pulse"></i>
</div>

@section scripts {
    <script src="~/dist/main.js" asp-append-version="true"></script>
}


scusate ma proprio non ci arrivo
qualcuno può dare un'occhiata?
Modificato da jjchuck il 09 settembre 2019 19:43 -
11.867 messaggi dal 09 febbraio 2002
Contributi
Ciao,
per caso in produzione la tua applicazione gira su più istanze che lavorano in parallelo?

Comunque, perché usare TempData in questo caso?
await HttpContext.SignInAsync(
              scheme: CookieAuthenticationDefaults.AuthenticationScheme,
              principal: claimsPrincipal,
              properties: authProperties);

            TempData["UserName"] = user.UserName;


Dato che hai autenticato l'utente, dal controller potrai recuperare il suo username nelle successive richieste con User.Identity.Name.

ciao,
Moreno

Enjoy learning and just keep making
902 messaggi dal 11 febbraio 2013
Grazie
semplifica tutto !

Intendi se l'app gira su piu server oppure ti riferisci a qualche configurazione del server?

ciao

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.