Cómo obtener el usuario actual en ASP.NET MVC

En un modelo de formularios, solía obtener el usuario actual conectado por:

Page.CurrentUser 

¿Cómo obtengo el usuario actual dentro de una clase de controlador en ASP.NET MVC?

Si necesita obtener el usuario desde el controlador, use la propiedad de User del Controlador. Si lo necesita desde la vista, rellenaría lo que necesita específicamente en ViewData , o podría simplemente llamar al Usuario porque creo que es propiedad de ViewPage .

Descubrí que el User funciona, es decir, User.Identity.Name o User.IsInRole("Administrator") .

Pruebe HttpContext.Current.User .

Public Shared Property Current () Como System.Web.HttpContext
Miembro de System.Web.HttpContext

Resumen:
Obtiene o establece el objeto System.Web.HttpContext para la solicitud HTTP actual.

Valores de devolución:
El System.Web.HttpContext para la solicitud HTTP actual

Puede obtener el nombre del usuario en ASP.NET MVC4 de esta manera:

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

Me doy cuenta de que esto es muy viejo, pero recién estoy comenzando con ASP.NET MVC, así que pensé en poner mi granito de arena en:

  • Request.IsAuthenticated le dice si el usuario está autenticado.
  • Page.User.Identity le da la identidad del usuario que ha iniciado sesión.

Yo suelo:

 Membership.GetUser().UserName 

No estoy seguro de que esto funcione en ASP.NET MVC, pero vale la pena intentarlo 🙂

Ingresando nombre de usuario: System.Web.HttpContext.Current.User.Identity.Name

Para hacer referencia a una ID de usuario creada utilizando autenticación simple integrada en ASP.NET MVC 4 en un controlador para fines de filtrado (lo cual es útil si está utilizando primero la base de datos y Entity Framework 5 para generar enlaces primero y sus tablas están estructuradas de manera que se utiliza una clave externa para el ID de usuario), puede usar

 WebSecurity.CurrentUserId 

una vez que agrega una instrucción using

 using System.Web.Security; 

Nombre de usuario con:

 User.Identity.Name 

Pero si necesita obtener solo la identificación, puede usar:

 using Microsoft.AspNet.Identity; 

Por lo tanto, puede obtener directamente la ID de usuario:

 User.Identity.GetUserId(); 

Esta página podría ser lo que estás buscando:
Utilizar Page.User.Identity.Name en MVC3

Solo necesita User.Identity.Name .

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

Esto obtendrá el usuario actual de Windows conectado.

Por lo que vale, en ASP.NET MVC 3 puede usar User que devuelve al usuario para la solicitud actual.

Si se encuentra dentro de su página de inicio de sesión, en el evento LoginUser_LoggedIn, por ejemplo, Current.User.Identity.Name devolverá un valor vacío, por lo que debe usar su propiedadLoginControlName.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 trabaja en Active Directory en una intranet, aquí hay algunos consejos:

(Windows Server 2012)

Ejecutar todo lo que habla con AD en un servidor web requiere un montón de cambios y paciencia. Dado que cuando se ejecuta en un servidor web frente a IIS / IIS Express local, se ejecuta en la identidad de la AppPool, por lo que debe configurarse para suplantar a quien acceda al sitio.

Cómo obtener el usuario conectado actual en un directorio activo cuando su aplicación ASP.NET MVC se ejecuta en un servidor web dentro de la red:

 // 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... 

Debe envolver todas las llamadas que tengan que ver con ‘contexto de directorio activo’ a continuación, de modo que actúe como el entorno de alojamiento para obtener la información de AD:

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

También debe impersonate conjunto a verdadero en su web.config:

   

Debe tener la autenticación de Windows activada en web.config:

  

En Asp.net Mvc Identity 2, puede obtener el nombre de usuario actual de la siguiente manera:

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

Podemos usar el siguiente código para obtener el usuario registrado actualmente en ASP.Net MVC:

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

también

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

Puede usar el siguiente código:

 Request.LogonUserIdentity.Name;