2013-03-02 7 views
6

नया एमवीसी 4 एप्लिकेशन बनाया गया उपयोगकर्ता प्रोफाइल तालिका:नए एमवीसी 4 एप्लिकेशन में उपयोगकर्ता आईडी (int) प्राप्त करें

उपयोगकर्ता आईडी (int) | उपयोगकर्ता नाम (nvarchar)

नियंत्रक में:

string currentUser = User.Identity.Name; // returns UserName 

    var mu1 = Membership.GetUser(); // returns null 

    var mu2 = Membership.GetUser(currentUser); // returns null as well 

मैं धागे का एक बहुत पढ़ सकते हैं और वे सब Guid है, जो मैं भी उपयोगकर्ता और सदस्यता तालिकाओं में नहीं है करने के बारे में बात करते हैं।

क्या उपयोगकर्ता में वर्तमान में लॉग इन किए गए UserId (int) को पाने का कोई तरीका है?

+0

प्राप्त कर सकते हैं तुम क्यों आईडी की जरूरत है? – andri

+1

@andri, किसी अन्य तालिका में विज्ञापन एफके स्टोर करने के लिए। – mishap

+0

उपयोगकर्ता नाम का उपयोग एफके के रूप में क्यों नहीं करते? उपयोगकर्ता नाम अद्वितीय है, है ना? – andri

उत्तर

0

mu1 और mu2 में उपयोगकर्ता को सफलतापूर्वक प्रमाणित किया गया है तो MembershipUser का एक उदाहरण होगा। MembershipUser में ProviderUserKey प्रकार object की संपत्ति है जिसमें उपयोगकर्ता के लिए पहचानकर्ता शामिल होगा।

Membership.GetUser() को एक सदस्यता प्रदाता को आवेदन के लिए लगाया जाना चाहिए और उपयोगकर्ता को प्रमाणीकृत होना आवश्यक है; चूंकि आप null लौट रहे हैं, यह सुझाव देगा कि उपरोक्त शर्तों में से एक को पूरा नहीं किया गया है।

3

आप

WebSecurity.GetUserId(User.Identity.Name); 

अतिरिक्त जानकारी के साथ पूर्णांक के रूप में उपयोगकर्ता पहचान प्राप्त कर सकते हैं: आप नियंत्रक वर्ग के शीर्ष पर [InitializeSimpleMembership] जोड़ना चाहिए अगर आप AccountController तुलना में एक और नियंत्रक का उपयोग करें।

12

सुनिश्चित करें कि आप अपने नियंत्रक के शीर्ष पर [InitializeSimpleMembership] जोड़ें ताकि यह निर्देशिका में फ़ाइल InitializeSimpleMembershipAttribute.cs के माध्यम से सरल सदस्यता शुरू कर सके।

तो फिर तुम कई अलग अलग तरीकों प्रयोक्ता आईडी का उपयोग कर सकते हैं:

int mu1 = (int)WebSecurity.CurrentUserId; 
int mu2 = (int)Membership.GetUser().ProviderUserKey; 
+0

मेरा प्रारंभिक सिंपलमेम्बरशिप एट्रिब्यूट फ़िल्टर \ InitializeSimpleMembershipAttribute में स्थित है, इसलिए मैंने अपने नियंत्रक के शीर्ष पर 'मनोरंजन सर्विसेज टिकटिंग सिस्टम सिस्टम का उपयोग करके' जोड़ा। लेकिन मेरा int 'mu1 = (int) WebSecurity.CurrentUserId; 'मुझे देता है' नाम 'वेबसेक्चर' मौजूद नहीं है वर्तमान संदर्भ में। इसलिए मैंने 'वेबमैट्रिक्स का उपयोग किया। वेबडेटा;' क्या यह अभी भी काम करेगा? – TykiMikk

0

आप UserId

if (Request.IsAuthenticated) 
{ 
    var membership = (SimpleMembershipProvider)Membership.Provider; 
    int idUser = membership.GetUserId(User.Identity.Name); 
} 
संबंधित मुद्दे