2010-10-21 36 views
10

Estoy utilizando la autenticación de Windows y el acceso al nombre de usuario como.Cómo obtener detalles del usuario en asp.net Autenticación de Windows

IIdentity winId = HttpContext.Current.User.Identity; 
string name = winId.Name; 

pero quiero obtener otros detalles como nombre completo del usuario y EmailID.

+0

¿Está utilizando proveedor de memebership en su aplicación? – Restuta

+0

no, mi aplicación. está en la intranet por lo que usa la autenticación de Windows. –

Respuesta

14

Ya que estás en una red de Windows, entonces usted necesita para consultar el directorio activo para buscar el usuario y luego obtener sus propiedades, tales como el correo electrónico

Aquí es una función de ejemplo DisplayUser que le dio una IIdentity en una red autenticado ventanas, se encuentra del usuario email:

public static void Main() { 
    DisplayUser(WindowsIdentity.GetCurrent()); 
    Console.ReadKey();  
} 

public static void DisplayUser(IIdentity id) {  
    WindowsIdentity winId = id as WindowsIdentity; 
    if (id == null) { 
     Console.WriteLine("Identity is not a windows identity"); 
     return; 
    } 

    string userInQuestion = winId.Name.Split('\\')[1]; 
    string myDomain = winId.Name.Split('\\')[0]; // this is the domain that the user is in 
    // the account that this program runs in should be authenticated in there      
    DirectoryEntry entry = new DirectoryEntry("LDAP://" + myDomain); 
    DirectorySearcher adSearcher = new DirectorySearcher(entry); 

    adSearcher.SearchScope = SearchScope.Subtree; 
    adSearcher.Filter = "(&(objectClass=user)(samaccountname=" + userInQuestion + "))"; 
    SearchResult userObject = adSearcher.FindOne(); 
    if (userObject != null) { 
     string[] props = new string[] { "title", "mail" }; 
     foreach (string prop in props) { 
      Console.WriteLine("{0} : {1}", prop, userObject.Properties[prop][0]); 
     } 
    } 
} 

da esto: alt text

Editar: Si se obtiene el 'mal de usuario/contraseña errores' La cuenta que el código se ejecuta bajo deben tener acceso los usuarios del dominio. Si ejecuta el código en asp.net, entonces la aplicación web debe ejecutarse en un grupo de aplicaciones con credenciales con acceso de dominio. Ver here para más información

+1

Jeevan. ¿Este ejemplo no funciona para usted? –

+0

gracias, pero ... Estoy usando la autenticación de Windows, así que mi propósito es: hay una usl "http: //ipAddress/myApp/home.aspx" ahora cuando la utilices, ábrela en intranet y luego en la pantalla veremos Su nombre de usuario nombre, nombre completo y emailid. Él no hará nada más. Ahora ven a nuestro código ... ¿cómo vamos a configurar "myPassword". –

+0

han editado la respuesta para hacerlo más simple. ¿Está bien ahora? –

-2

moldeada a la identidad específica, por ejemplo WindowsIdentity

+0

creo que no has leído mi pregunta. Necesito nombre completo y emailid. No podemos obtener estos detalles por WindowsIdentity. –

-1

Se puede definir una MyCustomIdentity anulando de IIdentity y añadir sus propias propiedades etc.

Cuestiones relacionadas