80 messaggi dal 12 settembre 2010
Ciao a tutti,
cerco di spiegare brevemente qual'è il mio problema con un applicazione Blazor Server (.NET Core 5) che sto realizzando e che integra anche l'autenticazione tramite Identity.

Una volta loggato riesco a recuperare le info sull'utente all'interno del componente Blazor utilizzando il seguente codice:

@inject AuthenticationStateProvider AuthenticationStateProvider
...
...
@code {
   protected override async Task OnInitializedAsynct()
   {
      ...
      var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
      var user = authState.User;
      ...
   }
}


Dove in Startup.cs ho configurato quanto segue:

public void ConfigureServices(IServiceCollection services){
   ...
   services.AddIdentity<Utenti, IdentityRole>().AddDefaultUI().AddEntityFrameworkStores<CoreDbContext>().AddDefaultTokenProviders();
   ...
   services.AddHttpContextAccessor();
   services.AddScoped<AuthenticationStateProvider, RevalidatingIdentityAuthenticationStateProvider<Utenti>>();
   ...
}


Se provo a recuperare le info utente all'interno di una WebAPI ottengo sempre un oggetto nullo...ho fatto diversi tentativi tramite dependency injection utilizzando sia HttpContextAccessor e sia UserManager ma ho notato che in entrambi i casi HttpContext.User praticamente è vuoto e quindi non riesco ad accedere alle info utente (oltre ad essere necessarie per vari motivi nelle logiche che sto implementando è anche necessario qualora volessi rendere accessibili o meno determinati endpoint).

Spero che qualcuno possa aiutarmi a capire cosa devo modificare nel codice per fare in modo che possa recuperare le info sull'utente loggato in qualsiasi punto dell'applicazione.

Grazie in anticipo!!!
6 messaggi dal 10 novembre 2010
Buongiorno,
hai valutato di cambiare approccio considerando che stai lavorando lato server (Blazor Server), sfruttando il sistema di autenticazioni che hai gia configurato per gestire i tuoi utenti, ma separare la tua logica in una libreria da condividere tra la tua app Blazor e la tua API (alla quale poi configurare un sistema di autenticazione tipo JTW per esempio). La tua libreria a quel punto avrebbe, tramite un HttpContextAccessor, accesso al tuo User.

Spero di esserti stato di aiuto, buon lavoro.
80 messaggi dal 12 settembre 2010
Ciao,
in questo momento ho creato una solution con un progetto Blazor server ed un progetto (libreria) nel quale vorrei trasferire tutta la logica...per la gestione degli utenti sto utilizzando l&#8217;identity che avevo precedentemente usato in un applicazione .net core mvc e non avevo avuto problemi ad accedere alle info dell&#8217;utente da qualsiasi punto del progetto...quindi devo integrare la gestione jwt all&#8217;identity che sto già gestendo oppure devo proprio rifare tutto da zero? In questo momento tramite l&#8217;identity il login e la registrazione già funzionano di default e se accedo all&#8217;HttpContext.User dal codice del componente già recupero i dati che mi servono...vorrei evitare di stravolgere tutto se possibile.

Intanto grazie per avermi risposto.
6 messaggi dal 10 novembre 2010
Buongiorno,
direi che in linea di massima non dovrai stravolgere il tutto, dovrai probabilmente fare attenzione a gestire eventuali custom claims tra le due configurazioni.

La parte app Blazor non avrai particolari problemi a mantenere la tua impostazione recuperando le info nella tua logica, la api core dal canto suo ha gia tutto per implementare identity con le opportune configurazioni.

Se vuoi puoi anche sperimentare (ovviamente da valutare il tuo contesto con pro contro tra le due soluzioni Blazor server e Blazor wasm) blazor wasm "recuperando" la tua identity attraverso l'uso per esempio di IdentityServer4.

Buon lavoro

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.