Heim >Backend-Entwicklung >C++ >Wie greife ich in ASP.NET Core-Controllern auf den aktuellen Benutzer zu?
Abrufen des aktuellen Benutzers in ASP.NET Core-Controllern
Der Zugriff auf Benutzerinformationen innerhalb von ASP.NET Core-Controllern erfordert sorgfältige Überlegungen, um Nullreferenzausnahmen zu vermeiden. Die direkte Verwendung von HttpContext
im Konstruktor eines Controllers ist fehleranfällig.
Zugriff auf Benutzerdaten innerhalb einer Aktionsmethode
Eine zuverlässige Methode besteht darin, Benutzerdetails innerhalb einer Aktionsmethode abzurufen und sie in ViewData
zu speichern. In diesem Beispiel wird davon ausgegangen, dass in der Anfrage ein Benutzer-Cookie vorhanden ist:
<code class="language-csharp">public ActionResult Index() { string userId = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; ViewData["UserId"] = userId; return View(); }</code>
Greifen Sie anschließend über ViewData["UserId"]
in jeder mit der Aktion Index
verknüpften Ansicht auf die Benutzer-ID zu. Der nullbedingte Operator (?.
) verhindert Ausnahmen, wenn FindFirst
null zurückgibt.
Zugriff auf Benutzerdaten im Controller-Konstruktor
Für den konstruktorbasierten Zugriff nutzen Sie die IHttpContextAccessor
-Schnittstelle:
<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { string userId = httpContextAccessor.HttpContext?.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; // ... further processing of userId ... }</code>
Stellen Sie sicher, dass IHttpContextAccessor
in Ihrer Dienstkonfiguration registriert ist:
<code class="language-csharp">public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); }</code>
Diese Techniken bieten robuste Methoden für den Zugriff auf aktuelle Benutzerdaten in ASP.NET Core und minimieren so das Risiko von Laufzeitfehlern. Denken Sie daran, potenzielle Nullwerte mithilfe von Null-Bedingungsoperatoren angemessen zu behandeln.
Das obige ist der detaillierte Inhalt vonWie greife ich in ASP.NET Core-Controllern auf den aktuellen Benutzer zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!