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.HttpContextRé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;