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?

251
demandé sur Peter Mortensen 2008-11-05 00:24:25

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.

245
répondu Haacked 2015-07-11 05:55:25

, j'ai trouvé que User fonctionne, qui est, User.Identity.Name ou User.IsInRole("Administrator").

182
répondu Peter Mortensen 2017-01-11 18:46:42

Essayez HttpContext.Current.User.

Propriété Publique Partagée Current () As Système.Web.HttpContext
Membre du système.Web.HttpContext

Ré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

55
répondu dove 2017-01-11 18:43:08

Vous pouvez obtenir le nom de l'utilisateur dans ASP.NET MVC4 comme ceci:

System.Web.HttpContext.Current.User.Identity.Name
35
répondu radbyx 2017-10-26 07:40:05

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é.
20
répondu jrb 2017-01-11 18:46:03

J'utilise:

Membership.GetUser().UserName

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

16
répondu Sean 2017-01-11 18:42:30

Se connecter au nom d'utilisateur: System.Web.HttpContext.Current.User.Identity.Name

11
répondu tifoz 2010-09-08 12:50:12

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;
9
répondu MattC 2017-01-11 18:51:36

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();
6
répondu Gilberto B. Terra Jr. 2017-01-12 13:44:53

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

Vous avez juste besoin de User.Identity.Name.

5
répondu heriawan 2017-05-23 12:02:48

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

Cela obtiendra l'utilisateur Windows connecté en cours.

5
répondu Clay Smith 2017-01-11 18:54:26

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.

4
répondu Pieter 2017-01-11 18:47:31

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);
4
répondu live-love 2017-01-11 18:50:24
IPrincipal currentUser = HttpContext.Current.User;
bool writeEnable = currentUser.IsInRole("Administrator") ||
        ...
                   currentUser.IsInRole("Operator");
3
répondu Gediminas Bukauskas 2011-11-13 09:13:36
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));
2
répondu Ognyan Dimitrov 2015-06-24 07:47:06

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" />
2
répondu Beau D'Amore 2017-01-11 18:58:56

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'
2
répondu Raj Baral 2018-01-24 00:02:15

Vous pouvez utiliser le code suivant:

Request.LogonUserIdentity.Name;
2
répondu Rajeev Jayaswal 2018-01-24 00:16:33

Dans Asp.net MVC Identity 2, Vous pouvez obtenir le nom d'utilisateur actuel par:

var username = System.Web.HttpContext.Current.User.Identity.Name;
1
répondu Fereydoon Barikzehy 2017-09-29 14:18:46