Maison >développement back-end >C++ >Comment récupérer de manière fiable l'identité de l'utilisateur actuel dans 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 :
IHttpContextAccessor
dans le constructeur de votre contrôleur.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!