Accéder à l'utilisateur actuel dans le constructeur d'un contrôleur ASP.NET Core peut présenter des défis en raison de la null
valeur potentielle de HttpContext
. Cet article propose des solutions efficaces pour récupérer efficacement les informations des utilisateurs sans appels répétés.
L'approche courante, utilisant HttpContext.User.GetUserId()
, échoue au sein du constructeur. Pour optimiser la récupération des données utilisateurs, une méthode centralisée est privilégiée.
Voici comment résoudre ce problème :
Dans les actions du contrôleur : Utilisez HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value
pour obtenir l'ID utilisateur.
Au sein du constructeur (en utilisant IHttpContextAccessor) :
IHttpContextAccessor
dans votre projet et enregistrez-le dans ConfigureServices
.IHttpContextAccessor
dans le constructeur de votre contrôleur et accédez à l'ID utilisateur comme ceci :<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor) { var userId = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; }</code>
Notez l'ajout de l'opérateur conditionnel nul (?.
) pour gérer les valeurs nulles potentielles avec élégance. Cela évite les exceptions si User
ou FindFirst
renvoie null.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!