Comment obtenir l'utilisateur actuel ASP.NET MVC
Dans un modèle de formulaires, j'avais l'habitude d'obtenir l'utilisateur connecté actuel par:
Page.CurrentUser
Comment obtenir l'utilisateur actuel dans une classe de contrôleur ASP.NET MVC?
19 réponses
Si vous avez besoin d'obtenir l'utilisateur à partir du contrôleur, utilisez la propriété User
du contrôleur. Si vous en avez besoin de la vue, je remplirais ce dont vous avez spécifiquement besoin dans le ViewData
, ou vous pourriez simplement appeler User car je pense que c'est une propriété de ViewPage
.
, j'ai trouvé que User
fonctionne, qui est, User.Identity.Name
ou User.IsInRole("Administrator")
.
Essayez HttpContext.Current.User
.
Propriété Publique Partagée Current () As Système.Web.HttpContext
Membre du système.Web.HttpContextRésumé:
Obtient ou définit le système.Web.Objet HttpContext pour la requête HTTP en cours.Valeurs De Retour:
système.Web.HttpContext pour le courant Requête HTTP
Vous pouvez obtenir le nom de l'utilisateur dans ASP.NET MVC4 comme ceci:
System.Web.HttpContext.Current.User.Identity.Name
Je me rends compte que c'est vraiment vieux, mais je ne fais que commencer avec ASP.NET MVC, donc j'ai pensé que je collerais 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 au nom d'utilisateur: System.Web.HttpContext.Current.User.Identity.Name
Afin de référencer un ID utilisateur créé à l'aide d'une authentification simple intégrée dans ASP.NET MVC 4 dans un contrôleur à des fins de filtrage (ce qui est utile si vous utilisez database first et Entity Framework 5 pour générer des liaisons code-first et que vos tables sont structurées de manière à utiliser une clé étrangère à l'ID utilisateur), vous pouvez utiliser
WebSecurity.CurrentUserId
Une Fois que vous ajoutez une instruction using
using System.Web.Security;
Nom D'utilisateur avec:
User.Identity.Name
Mais si vous avez besoin d'obtenir juste L'ID, 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 Page.User.Identity.Name dans MVC3
Vous avez juste besoin de User.Identity.Name
.
Utilisez System.Security.Principal.WindowsIdentity.GetCurrent().Name
.
Cela obtiendra l'utilisateur Windows connecté en cours.
Pour ce que ça vaut, dans ASP.NET MVC 3 vous pouvez simplement utiliser User qui renvoie l'utilisateur pour la requête en cours.
Si vous êtes dans votre page de connexion, dans L'événement LoginUser_LoggedIn par exemple, Current.User.Identity.Name retournera une valeur vide, vous devez donc utiliser yourLoginControlName.Propriété nom d'utilisateur.
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)
L'exécution de tout ce qui parle à AD sur un serveur Web nécessite un tas de changements et de patience. Depuis lors de l'exécution sur un serveur web par rapport à IIS/IIS Express local, il s'exécute dans L'identité de L'AppPool, vous devez donc le configurer pour usurper l'identité de celui qui frappe le site.
Comment obtenir l'utilisateur actuel connecté dans un active directory lorsque votre ASP.NET l'application MVC est exécution sur un serveur web à l'intérieur 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 envelopper tous les appels ayant à voir avec' contexte active directory ' dans ce qui suit afin qu'il agisse comme l'environnement d'hébergement pour obtenir les informations D'annonce:
using (HostingEnvironment.Impersonate()){ ... }
Vous devez également avoir impersonate
défini sur true dans votre site web.configuration:
<system.web>
<identity impersonate="true" />
Vous devez disposer de l'authentification Windows dans le web.configuration:
<authentication mode="Windows" />
Nous pouvons utiliser le code suivant pour obtenir l'utilisateur connecté en cours 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;
Dans Asp.net MVC Identity 2, Vous pouvez obtenir le nom d'utilisateur actuel par:
var username = System.Web.HttpContext.Current.User.Identity.Name;