Maison >développement back-end >C++ >Comment récupérer de manière fiable l'identité de l'utilisateur actuel dans ASP.NET Core ?

Comment récupérer de manière fiable l'identité de l'utilisateur actuel dans ASP.NET Core ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-13 12:23:43563parcourir

How to Reliably Retrieve the Current User's Identity in ASP.NET Core?

Obtention sécurisée des informations utilisateur actuelles dans ASP.NET Core

Connaître l'identité de l'utilisateur actuellement connecté est crucial pour créer des applications ASP.NET Core sécurisées et personnalisées. La propriété HttpContext.User offre une multitude de revendications sur l'utilisateur authentifié.

Cependant, accéder directement à HttpContext dans le constructeur d'un contrôleur donne souvent un résultat nul car le constructeur s'exécute avant que le contexte de la requête HTTP soit configuré.

Bonnes pratiques : accès à l'identité de l'utilisateur dans les méthodes d'action

La méthode la plus fiable consiste à récupérer les détails de l'identité de l'utilisateur dans les méthodes d'action de votre contrôleur. Cela garantit que le HttpContext est correctement renseigné avec les données utilisateur lors du traitement de la demande.

Par exemple, pour obtenir l'identifiant de l'utilisateur :

<code class="language-csharp">public ActionResult Index()
{
    string userId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

    // Further processing of user ID and claims...

    return View();
}</code>

Alternative : utiliser IHttpContextAccessor pour l'accès au constructeur

Si vous avez besoin d'informations sur l'identité de l'utilisateur dans le constructeur du contrôleur, utilisez l'interface IHttpContextAccessor. Cette interface permet d'accéder au contexte HTTP actuel quelle que soit l'étape du cycle de vie du contrôleur.

Voici comment mettre en œuvre cela :

  1. Injectez IHttpContextAccessor dans le constructeur de votre contrôleur.
  2. Accédez aux revendications des utilisateurs via la propriété HttpContext.
<code class="language-csharp">public Controller(IHttpContextAccessor httpContextAccessor)
{
    string userId = httpContextAccessor.HttpContext?.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

    // Subsequent use of user ID and claims...
}</code>

Pensez à vous inscrire IHttpContextAccessor dans votre méthode Startup.ConfigureServices :

<code class="language-csharp">public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpContextAccessor();
    // ... other services
}</code>

L'utilisation de l'opérateur conditionnel nul (?.) permet d'éviter les exceptions si HttpContext ou si la réclamation est nulle. Choisissez la méthode qui correspond le mieux à vos besoins, en donnant la priorité à l'accès aux méthodes d'action pour des raisons de fiabilité.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn