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
Libérer: 2025-01-13 12:23:43
original
562 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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

<code class="language-csharp">public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpContextAccessor();
    // ... other services
}</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal