Maison >développement back-end >C++ >Comment récupérer efficacement l'utilisateur d'application actuel dans l'identité ASP.NET MVC 5 ?

Comment récupérer efficacement l'utilisateur d'application actuel dans l'identité ASP.NET MVC 5 ?

DDD
DDDoriginal
2024-12-25 09:37:371131parcourir

How to Efficiently Retrieve the Current ApplicationUser in ASP.NET MVC 5 Identity?

ASP.NET MVC 5 - Identité : obtention de l'utilisateur d'application actuel

Afin de définir la propriété Author d'une entité Article sur l'utilisateur authentifié actuel, il est crucial de récupérer l'intégralité de l'ApplicationUser objet.

Approche standard

À l'aide de l'extension d'identité, vous pouvez facilement récupérer l'utilisateur actuel à l'aide du code suivant :

ApplicationUser currentUser = db.Users.FirstOrDefault(x => x.Id == User.Identity.GetUserId());

Cependant, cette approche présente des inconvénients. Cela nécessite une interrogation directe de la base de données, introduisant des dépendances supplémentaires et des incohérences potentielles avec les futures modifications de la base de données.

Approche alternative

Pour surmonter ces limitations, utilisez la classe UserManager fournie par le framework ASP.NET Identity :

var user = UserManager.FindById(User.Identity.GetUserId());

Cette méthode récupère efficacement l'utilisateur actuel sans avoir besoin d'une connexion directe accès à la base de données. Il garantit la cohérence avec les futures modifications de l'API et élimine le risque d'introduire de nouvelles dépendances de contexte.

Synchronisation avec OWIN

Lors de l'accès à l'objet utilisateur en dehors d'un contrôleur, récupérer l'ID utilisateur à partir du OwinContext du HttpContent actuel :

ApplicationUser user = System.Web.HttpContext.Current.GetOwinContext().GetUserManager<ApplicationUserManager>().FindById(System.Web.HttpContext.Current.User.Identity.GetUserId());

Cette approche garantit synchronisation avec la gestion des utilisateurs assurée par OWIN.

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