Heim >Backend-Entwicklung >C++ >Wie greife ich effizient auf aktuelle Benutzerinformationen in ASP.NET Core-Controllern mit Anforderungsbereich zu?

Wie greife ich effizient auf aktuelle Benutzerinformationen in ASP.NET Core-Controllern mit Anforderungsbereich zu?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-13 12:10:43581Durchsuche

How to Efficiently Access Current User Information in ASP.NET Core Request-Scoped Controllers?

Zugriff auf Benutzerdetails in ASP.NET Core-Controllern mit Anforderungsbereich

Das Abrufen authentifizierter Benutzerdetails, wie z. B. ihrer E-Mail-Adresse, ist in Webanwendungen von entscheidender Bedeutung. Um dies jedoch in ASP.NET Core-Controllern mit Anforderungsbereich effizient zu verwalten, ist sorgfältige Überlegung erforderlich.

Problem: Der direkte Zugriff auf HttpContext.User innerhalb des Konstruktors eines Controllers führt häufig zu einem Nullwert HttpContext, wodurch der Abruf von Benutzerinformationen verhindert wird. Das wiederholte Abrufen dieser Daten in jeder Aktionsmethode ist ineffizient.

Lösung: Nutzen Sie das [Authorize]-Attribut und den IHttpContextAccessor-Dienst.

Schritte zum Zugriff auf Benutzerinformationen:

  1. Registrieren Sie IHttpContextAccessor in Ihrem Startup.cs (oder Program.cs in .NET 6 und höher):
<code class="language-csharp">public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpContextAccessor();
    // ... other services
}</code>
  1. Injizieren Sie IHttpContextAccessor in den Konstruktor Ihres Controllers:
<code class="language-csharp">public class MyController : Controller
{
    private readonly IHttpContextAccessor _httpContextAccessor;

    public MyController(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
        //Retrieve and store user ID
        var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; 
        //Further processing of userId as needed...
    }

    // ... your controller actions ...
}</code>

Dieser Ansatz ermöglicht Ihnen den Zugriff auf die Identität des Benutzers im Konstruktor des Controllers. Sie können diese Informationen dann zur späteren Verwendung im Controller speichern, um die Effizienz zu verbessern und wiederholte Aufrufe von HttpContext.User zu vermeiden. Die Verwendung des Null-Bedingungsoperators (?.) behandelt Fälle, in denen der Anspruch möglicherweise nicht vorhanden ist.

Das obige ist der detaillierte Inhalt vonWie greife ich effizient auf aktuelle Benutzerinformationen in ASP.NET Core-Controllern mit Anforderungsbereich zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn