Maison >développement back-end >C++ >Comment accéder efficacement aux informations utilisateur actuelles dans les contrôleurs ASP.NET Core à portée de requête ?

Comment accéder efficacement aux informations utilisateur actuelles dans les contrôleurs ASP.NET Core à portée de requête ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-13 12:10:43629parcourir

How to Efficiently Access Current User Information in ASP.NET Core Request-Scoped Controllers?

Accès aux détails de l'utilisateur dans les contrôleurs à portée de requête ASP.NET Core

La récupération des détails des utilisateurs authentifiés, tels que leur adresse e-mail, est cruciale dans les applications Web. Cependant, gérer cela efficacement dans les contrôleurs ASP.NET Core à l’échelle des requêtes nécessite une attention particulière.

Problème : l'accès direct à HttpContext.User dans le constructeur d'un contrôleur entraîne souvent un HttpContext nul, empêchant la récupération des informations utilisateur. Récupérer ces données à plusieurs reprises dans chaque méthode d'action est inefficace.

Solution : exploitez l'attribut [Authorize] et le service IHttpContextAccessor.

Étapes pour accéder aux informations utilisateur :

  1. Inscrivez-vous IHttpContextAccessor dans votre Startup.cs (ou Program.cs dans .NET 6 et versions ultérieures) :
<code class="language-csharp">public void ConfigureServices(IServiceCollection services)
{
    services.AddHttpContextAccessor();
    // ... other services
}</code>
  1. Injectez IHttpContextAccessor dans le constructeur de votre contrôleur :
<code class="language-csharp">public class MyController : Controller
{
    private readonly IHttpContextAccessor _httpContextAccessor;

    public MyController(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
        //Retrieve and store user ID
        var userId = _httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.NameIdentifier)?.Value; 
        //Further processing of userId as needed...
    }

    // ... your controller actions ...
}</code>

Cette approche vous permet d'accéder à l'identité de l'utilisateur au sein du constructeur du contrôleur. Vous pouvez ensuite stocker ces informations pour une utilisation ultérieure dans le contrôleur, améliorant ainsi l'efficacité et évitant les appels répétés à HttpContext.User. L'utilisation de l'opérateur conditionnel nul (?.) gère les cas où la revendication peut ne pas être présente.

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