2010-10-21 10 views
10

मैं विंडोज प्रमाणीकरण का उपयोग कर रहा हूं और उपयोगकर्ता नाम को एक्सेस कर रहा हूं।एएसपीनेट में उपयोगकर्ता विवरण कैसे प्राप्त करें Windows प्रमाणीकरण

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

लेकिन मैं उपयोगकर्ता का पूरा नाम और ईमेल आईडी जैसे अन्य विवरण प्राप्त करना चाहता हूं।

+0

आप अपने आवेदन में memebership प्रदाता का उपयोग कर रहे अपने स्वयं के गुण आदि जोड़ सकते हैं? – Restuta

+0

नहीं, मेरा ऐप। विंडोज प्रमाणीकरण का उपयोग कर इंट्रानेट पर है। –

उत्तर

14

चूंकि आप एक खिड़कियों नेटवर्क पर हों, तो आप सक्रिय निर्देशिका क्वेरी करने के लिए उपयोगकर्ता के लिए खोज और फिर इसे गुण है प्राप्त करने के लिए इस तरह के ईमेल के रूप में की जरूरत है

यहाँ, एक उदाहरण समारोह DisplayUser कि एक खिड़कियों प्रमाणीकृत नेटवर्क पर एक IIdentity दिया है पाता है उपयोगकर्ता के 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]); 
     } 
    } 
} 

इस देता है: alt text

संपादित करें: आप 'बुरा उपयोगकर्ता/कूटशब्द त्रुटियों' खाता है कि कोड के अधीन ही उन डोमेन पहुँच होनी चाहिए मिलता है। यदि आप एएसपीनेट में कोड चलाते हैं तो वेब एप्लिकेशन को डोमेन एक्सेस के साथ क्रेडेंशियल्स वाले एप्लिकेशन पूल के तहत चलाया जाना चाहिए। अधिक जानकारी के लिए

here देखें
+1

जीवन। क्या यह उदाहरण आपके लिए काम नहीं करता है? –

+0

धन्यवाद, लेकिन ... मैं विंडोज प्रमाणीकरण का उपयोग कर रहा हूं, इसलिए मेरा उद्देश्य है: एक यूएसएल "http: //ipAddress/myApp/home.aspx" है, अब जब इसे इंट्रा नेट पर खोलें तो स्क्रीन में हम उसका लॉगिन देखेंगे नाम, पूरा नाम और ईमेल आईडी। वह और कुछ नहीं करेगा। अब अपने कोड पर आओ ... हम "myPassword" कैसे सेट करेंगे। –

+0

ने इसे आसान बनाने के लिए उत्तर संपादित किया है। क्या यह ठीक है? –

-2

विशिष्ट पहचान करने के लिए यह कास्ट, उदाहरण के लिए WindowsIdentity

+0

मुझे लगता है कि आपने मेरा प्रश्न नहीं पढ़ा है। मुझे पूरा नाम और ईमेलिड चाहिए। हम WindowsIdentity द्वारा इन विवरणों को नहीं प्राप्त कर सकते हैं। –

-1

आप IIdentity से अधिभावी द्वारा एक MyCustomIdentity को परिभाषित करने और

संबंधित मुद्दे