2016-08-31 5 views
7

कुछ (अस्पष्ट) कारण मेरी MVC 4 आवेदन एक GUID रिटर्न के लिए जब मैं चलाएँ:User.Identity.Name रिटर्न guid

var name = User.Identity.Name; 

मैं भी एक नया MVC 4 आवेदन में यह परीक्षण किया है और यह नया है मेरे साथ व्यवहार जब मैं IIDentity पर प्रलेखन को देखता हूं, यह बताता है कि (जैसा कि मुझे याद आया) कि पहचान नाम

वर्तमान उपयोगकर्ता का नाम प्राप्त करता है।

यह मेरे मामले में एक गाइड वापस क्यों कर रहा है?

web.config से

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" /> 
</authentication> 

अधिक प्रासंगिक जानकारी: आवेदन भी, एक और मशीन पर तैनात किया जाता है एक ही डाटाबेस से बात कर रही। हम उस डेटाबेस में "User.Identity.Name" के मान का उपयोग करते हैं और जब यह किसी उपयोगकर्ता (नए उपयोगकर्ता) के लिए नहीं होता है तो हम उस मार्गदर्शिका के साथ एक नया उपयोगकर्ता जोड़ते हैं।

अब, अजीब बात है: जब आप एप्लिकेशन स्विच करते हैं (स्थानीयहोस्ट से टी पर तैनात किए गए) को आपको फिर से लॉग इन करने की आवश्यकता होती है। User.Identity.Name को फिर एक नए guid पर सेट किया जाएगा।

(स्टार्टर डिफ़ॉल्ट अनुप्रयोग हम निश्चित रूप से डीबी से बात नहीं है, लेकिन एक ही बात होता है के साथ; User.Identity.Name एक GUID रिटर्न)

+1

* प्रमाणीकरण/प्रमाणीकरण * के लिए आप क्या उपयोग करते हैं? –

+0

यह एमवीसी 4 इंटरनेट अनुप्रयोगों के लिए सिर्फ डिफ़ॉल्ट टेम्पलेट है: जो मूर्खतापूर्ण चीज है; आपको आम तौर पर इन चीजों के बारे में सोचना नहीं पड़ता है ... – Tom

+0

शायद [यह] (http://stackoverflow.com/questions/924692/how-do-you-get-the-userid-of-a-user- ऑब्जेक्ट-इन-एएसपी-नेट-एमवीसी) आपके लिए उपयोगी हो सकता है -ओआर- [लिंक] (https://coderwall.com/p/qmsqya/how-to-get-current-user-id-in-asp- नेट-एमवीसी -4) उपयोगी भी हो सकता है –

उत्तर

1

आप सामान्य प्रिंसिपल वस्तु को खोजने के लिए की आवश्यकता होगी जो वर्तमान उपयोगकर्ता से मेल खाता है।

using System.Security.Principal; 
... 

GenericPrincipal genericPrincipal = GetGenericPrincipal(); 
GenericIdentity principalIdentity = (GenericIdentity)genericPrincipal.Identity; 
string fullName = principalIdentity.Name; 
संबंधित मुद्दे