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 :
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>
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!