Comment obtenir l’utilisateur actuel dans ASP.NET MVC

Dans un modèle de formulaires, j’avais l’habitude d’obtenir l’utilisateur connecté actuel par:

Page.CurrentUser 

Comment puis-je obtenir l’utilisateur actuel dans une classe de contrôleur dans ASP.NET MVC?

Si vous avez besoin de l’utilisateur depuis le contrôleur, utilisez la propriété User du Controller. Si vous en avez besoin depuis la vue, je ViewData ce que vous avez spécifiquement besoin dans ViewData , ou vous pourriez simplement appeler User car je pense que c’est une propriété de ViewPage .

J’ai trouvé que l’ User fonctionne, c’est-à-dire User.Identity.Name ou User.IsInRole("Administrator") .

Essayez HttpContext.Current.User .

Propriété partagée publique Current () As System.Web.HttpContext
Membre de System.Web.HttpContext

Résumé:
Obtient ou définit l’object System.Web.HttpContext pour la requête HTTP en cours.

Valeurs de retour:
Le System.Web.HttpContext pour la requête HTTP en cours

Vous pouvez obtenir le nom de l’utilisateur dans ASP.NET MVC4 comme suit:

 System.Web.HttpContext.Current.User.Identity.Name 

Je me rends compte que c’est vraiment vieux, mais je commence juste avec ASP.NET MVC, alors j’ai pensé que je mettrais mes deux cents dans:

  • Request.IsAuthenticated vous indique si l’utilisateur est authentifié.
  • Page.User.Identity vous donne l’identité de l’utilisateur connecté.

J’utilise:

 Membership.GetUser().UserName 

Je ne suis pas sûr que cela fonctionnera dans ASP.NET MVC, mais ça vaut le coup 🙂

Se connecter Nom d’utilisateur: System.Web.HttpContext.Current.User.Identity.Name

Afin de référencer un ID utilisateur créé en utilisant une authentification simple intégrée à ASP.NET MVC 4 dans un contrôleur à des fins de filtrage (ce qui est utile si vous utilisez d’abord la firebase database et Entity Framework 5 pour générer des liaisons basées sur le code et que vos tables soient structurées) qu’une clé étrangère à l’ID utilisateur est utilisée), vous pouvez utiliser

 WebSecurity.CurrentUserId 

une fois que vous ajoutez une déclaration using

 using System.Web.Security; 

UserName avec:

 User.Identity.Name 

Mais si vous avez seulement besoin de l’identifiant, vous pouvez utiliser:

 using Microsoft.AspNet.Identity; 

Ainsi, vous pouvez obtenir directement l’ID utilisateur:

 User.Identity.GetUserId(); 

Cette page pourrait être ce que vous cherchez:
Utilisation de Page.User.Identity.Name dans MVC3

Vous avez juste besoin de User.Identity.Name .

Utilisez System.Security.Principal.WindowsIdentity.GetCurrent().Name .

Cela permettra d’obtenir l’utilisateur Windows actuellement connecté.

Pour ce que cela vaut, dans ASP.NET MVC 3, vous pouvez simplement utiliser User qui renvoie l’utilisateur pour la requête en cours.

Si vous vous trouvez dans votre page de connexion, dans l’événement LoginUser_LoggedIn, par exemple, Current.User.Identity.Name renverra une valeur vide, vous devez donc utiliser votre propriétéLoginControlName.UserName.

 MembershipUser u = Membership.GetUser(LoginUser.UserName); 
 IPrincipal currentUser = HttpContext.Current.User; bool writeEnable = currentUser.IsInRole("Administrator") || ... currentUser.IsInRole("Operator"); 
 var ticket = FormsAuthentication.Decrypt( HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Value); if (ticket.Expired) { throw new InvalidOperationException("Ticket expired."); } IPrincipal user = (System.Security.Principal.IPrincipal) new RolePrincipal(new FormsIdentity(ticket)); 

Si vous travaillez dans Active Directory sur un intranet, voici quelques conseils:

(Windows Server 2012)

Exécuter tout ce qui parle à AD sur un serveur Web nécessite beaucoup de changements et de patience. Étant donné que lors de l’exécution sur un serveur Web contre un serveur IIS / IIS Express local, il s’exécute dans l’identité de AppPool, vous devez donc le configurer pour emprunter l’identité de quiconque accède au site.

Comment obtenir l’utilisateur actuellement connecté dans un répertoire actif lorsque votre application ASP.NET MVC s’exécute sur un serveur Web du réseau:

 // Find currently logged in user UserPrincipal adUser = null; using (HostingEnvironment.Impersonate()) { var userContext = System.Web.HttpContext.Current.User.Identity; PrincipalContext ctx = new PrincipalContext(ContextType.Domain, ConfigurationManager.AppSettings["AllowedDomain"], null, ContextOptions.Negotiate | ContextOptions.SecureSocketLayer); adUser = UserPrincipal.FindByIdentity(ctx, userContext.Name); } //Then work with 'adUser' from here... 

Vous devez encapsuler tous les appels relatifs au «contexte de répertoire actif» dans ce qui suit, afin d’agir comme environnement d’hébergement pour obtenir les informations AD:

 using (HostingEnvironment.Impersonate()){ ... } 

Vous devez également avoir impersonate défini sur true dans votre fichier web.config:

   

Vous devez avoir l’authentification Windows dans web.config:

  

Dans Asp.net Mvc Identity 2, vous pouvez obtenir le nom d’utilisateur actuel en:

 var username = System.Web.HttpContext.Current.User.Identity.Name; 

Nous pouvons utiliser le code suivant pour obtenir l’utilisateur connecté actuel dans ASP.Net MVC:

 var user= System.Web.HttpContext.Current.User.Identity.GetUserName(); 

Aussi

 var userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name; //will give 'Domain//UserName' Environment.UserName - Will Display format : 'Username' 

Vous pouvez utiliser le code suivant:

 Request.LogonUserIdentity.Name;