ICurrentUserContextService
Documentație pentru ICurrentUserContextService
Descriere generală
ICurrentUserContextService
este un serviciu definit printr-o interfață care gestionează contextul curent al utilizatorului într-o aplicație. Interfața este implementată atât pe partea de client, cât și pe partea de server, fiecare versiune având un comportament specific:
- Client: folosește
HttpClient
pentru a interacționa cu backend-ul REST. - Server: folosește
HttpContext
și cookie-uri pentru a păstra contextul șiIUserContextService
pentru obținerea detaliilor.
Această separare permite utilizarea aceleiași interfețe atât în aplicații Blazor WebAssembly, cât și în Blazor Server sau ASP.NET Core MVC.
Funcționalități principale
Metodă | Return Type | Descriere |
---|---|---|
Task Set(string contextId, bool selected = false) |
Task |
Salvează contextul utilizatorului. Pe client, face POST către server; pe server, scrie în cookie. |
Task<SelectedContext?> GetSelectedContext() |
Task<SelectedContext?> |
Returnează contextul selectat. Pe client îl ia de la API, pe server din cookie sau generează fallback. |
Task<UserContext?> GetUserContext() |
Task<UserContext?> |
Returnează contextul complet. Pe client îl ia de la endpoint dedicat, pe server prin IUserContextService . |
Task<UserContext?> GetIndividualUserContext() |
Task<UserContext?> |
Pe server returnează contextul de tip individual; pe client poate fi neimplementată. |
Implementare implicită
Este important de menționat că, atât pe partea de client, cât și pe partea de server, metoda GetUserContext()
este utilizată pentru a verifica și obține contextul actual al utilizatorului autentificat.
- Client: interoghează endpoint-ul
/context/user-context
și returnează toate informațiile relevante despre contextul curent. - Server: folosește
GetSelectedContext()
șiIUserContextService
pentru a returna modelul completUserContext
.
Diferențe cheie între metode
GetSelectedContext()
returnează doar identificatorul (ContextId
) și starea (IsSelected
) a contextului selectat de utilizator.GetUserContext()
returnează un model complet de tipUserContext
, care conține toate atributele asociate utilizatorului în contextul respectiv (ex: nume, roluri, permisiuni etc.).
Detalii implementare
Client (Blazor WebAssembly)
- Utilizare principală în UI.
- Se bazează pe apeluri HTTP:
GET
pentru a obține contextul (/context
,/context/user-context
)POST
pentru a seta contextul curent.- Cache intern (
_selectedContext
) pentru optimizarea performanțelor.
Server (ASP.NET Core)
- Se bazează pe cookie (
current-context
) pentru a reține contextul utilizatorului. - Dacă nu există context valid, alege unul implicit din lista oferită de
IUserContextService
. - Suportă și context de tip individual prin
GetIndividualUserContext()
.
Exemplu de utilizare
` @inject ICurrentUserContextService UserContextService
@code { private SelectedContext? context;
protected override async Task OnInitializedAsync()
{
context = await UserContextService.GetSelectedContext();
}
} `