2011-03-24 8 views
15

Para obtener el actual usuario que ha entrado en el sistema que utilizo este código:¿Cómo obtener el usuario actual que está accediendo a una aplicación ASP.NET?

string opl = System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString(); 

Yo trabajo en una aplicación ASP.NET donde necesito esta información. Así que puse mi aplicación en un servidor y probé el código anterior, y recibí el "Servicio de red" en la cadena opl. Necesito saber quién es el usuario actual de la PC que accede a mi aplicación ASP.NET.

Respuesta

12

Si está utilizando la membresía que puede hacer: Membership.GetUser()

Su código está regresando la cuenta de Windows que se asigna con ASP.NET.

+0

espacio de nombres en el que puedo encontrar esto? – SamekaTV

+2

System.Web.Security namespace – Robert

+0

Obtengo: "Referencia de objeto no establecida en una instancia de un objeto." - error – SamekaTV

41

La respuesta rápida es User = System.Web.HttpContext.Current.User

Asegúrese de que su web.config tiene el siguiente elemento de autenticación.

<configuration> 
    <system.web> 
     <authentication mode="Windows" /> 
     <authorization> 
      <deny users="?"/> 
     </authorization> 
    </system.web> 
</configuration> 

Lectura adicional: Recipe: Enabling Windows Authentication within an Intranet ASP.NET Web application

+6

Esto si está buscando el inicio de sesión de usuario. Específicamente, la cadena es 'System.Web.HttpContext.Current.User.Identity.Name' – Nashwan

+0

Ahora no devuelve nada, la cadena está vacía: s – SamekaTV

+1

Lea el artículo, debe configurar la autenticación de Windows. – BenCr

13

Usando System.Web.HttpContext.Current.User.Identity.Name debería funcionar. Por favor, compruebe la configuración de IIS sitio en el servidor que aloja el sitio de la siguiente manera:

  1. vaya a IIS → Sitios → su sitio → autenticación

    IIS Settings

  2. Ahora compruebe que Acceso anónimo está Deshabilitado & Autenticación de Windows está habilitado.

    Authentication

  3. Ahora System.Web.HttpContext.Current.User.Identity.Name debería devolver algo como esto:

    domain\username

+0

Para la aplicación MVC C#, esto funcionó para mí – akasoggybunz

4

La mejor práctica es comprobar la Identity.IsAuthenticated Propiedad primero y luego obtener el usr.UserName así:

string userName = string.Empty; 

if (System.Web.HttpContext.Current != null && 
    System.Web.HttpContext.Current.User.Identity.IsAuthenticated) 
{ 
    System.Web.Security.MembershipUser usr = Membership.GetUser(); 
    if (usr != null) 
    { 
     userName = usr.UserName; 
    } 
} 
2

No mire demasiado lejos.

Si desarrolla con ASP.NET MVC, simplemente tiene al usuario como property of the Controller class. Entonces, en caso de que se pierda en algunos modelos que buscan al usuario actual, trate de dar un paso atrás y obtener la información relevante en el controlador.

En el controlador, sólo tiene que utilizar:

using Microsoft.AspNet.Identity; 

    ... 

    var userId = User.Identity.GetUserId(); 
    ... 

con userId como una cadena.

2

Puede simplemente usar una propiedad de la página.Y lo interesante es que puedes acceder a esa propiedad en cualquier parte de tu código.

Utilice esta:

HttpContext.Current.User.Identity.Name 
Cuestiones relacionadas