Der Zugriff auf den aktuellen Benutzer im Konstruktor eines ASP.NET Core-Controllers kann aufgrund des potenziellen null
-Werts von HttpContext
eine Herausforderung darstellen. Dieser Artikel bietet effektive Lösungen zum effizienten Abrufen von Benutzerinformationen ohne wiederholte Anrufe.
Der übliche Ansatz, HttpContext.User.GetUserId()
zu verwenden, schlägt im Konstruktor fehl. Um den Abruf von Benutzerdaten zu optimieren, wird eine zentralisierte Methode bevorzugt.
So beheben Sie dieses Problem:
Innerhalb von Controller-Aktionen: Verwenden Sie HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value
, um die Benutzer-ID zu erhalten.
Innerhalb des Konstruktors (Nutzung von IHttpContextAccessor):
IHttpContextAccessor
in Ihr Projekt ein und registrieren Sie es in ConfigureServices
.IHttpContextAccessor
in den Konstruktor Ihres Controllers ein und greifen Sie wie folgt auf die Benutzer-ID zu:<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { var userId = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; }</code>
Beachten Sie die Hinzufügung des Null-Bedingungsoperators (?.
), um potenzielle Nullwerte ordnungsgemäß zu verarbeiten. Dies verhindert Ausnahmen, wenn User
oder FindFirst
null zurückgibt.
Das obige ist der detaillierte Inhalt vonWie greife ich in ASP.NET Core Controller-Konstruktoren auf den aktuellen Benutzer zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!