2010-11-09 12 views
5

मैंने पहले भी MVC किया है प्रोफाइल, लेकिन मैं एएसपी और एएसपी MVC करने के लिए नया हूँ। मैं वास्तव में आसानी है कि एएसपी MVC मुझे प्रदान करता है, अब तक प्यार करता हूँ, लेकिन मैं मुसीबत पता लगाना कैसे उपयोगकर्ता पर अधिक नियंत्रण प्राप्त करने के लिए हो रहा है। डिफ़ॉल्ट रूप से, एमवीसी एक न्यूनतम उपयोगकर्ता पंजीकरण फॉर्म प्रदान करता है। मैं काफ़ी चारों ओर देखा है, लेकिन मैं अभी भी दो प्रश्न हैं:एएसपी MVC उपयोगकर्ता

  1. मैं उपयोगकर्ता डेटा बेस अपने प्रोजेक्ट में एक स्थानीय डेटाबेस कैसे करूं? मुझे लगता है कि SQLEXPRESS का उपयोग उपयोगकर्ता मानों को संग्रहीत करने के लिए किया जाता है, जो कि जादुई प्रक्रिया की तरह दिखता है। मैं इसे कैसे जादू कर सकता हूं? मैं इस डेटाबेस के स्थान पर अधिक नियंत्रण रखना चाहता हूं।

  2. यह एक और सवाल की ओर जाता है: मैं उपयोगकर्ता का विस्तार कैसे करते हैं? मैं प्रोफाइल पर पढ़ रहा हूं, लेकिन मैं अभी भी कुछ चीजों के बारे में उलझन में हूं। मैं एक प्रोफाइल कैसे तैयार करूं और इसे उपयोगकर्ता से जोड़ूं? विदेशी कुंजी के रूप में क्या कार्य करता है? और, मेरी नियंत्रकों में, मैं कैसे की तरह उपयोगकर्ता नाम, ईमेल, या firstname, lastname तरह प्रोफ़ाइल सामान (से भले ही मैं एक बार लगता है कि जब मैं एक प्रोफ़ाइल के डेटाबेस और एक उपयोगकर्ता की स्थानीय स्तर पर डेटाबेस है, मैं चला सकते हैं उपयोगकर्ता के विभिन्न भागों तक पहुँच सकते हैं एसक्यूएल डेटा पुनः प्राप्त करने)

मैं वास्तव में सही संसाधनों के लिए कुछ संकेत दिए की सराहना करेंगे आदेशों, और/या ASP.NET

साथ सर्वोत्तम प्रथाओं

उत्तर

3

मैं यहाँ से शुरू होगा:

इसके अलावा एक महान लेख श्रृंखला (18 लेख !!!) 4GuysFromRolla पर स्कॉट मिशेल से है।

एएसपी.NET सदस्यता मॉडल एक प्लग करने योग्य वास्तुकला के लिए तैयार है। आप अपना खुद का सदस्यता प्रदाता कार्यान्वयन लिख सकते हैं जो आपकी आवश्यकताओं के अनुरूप सर्वोत्तम है।

यहां तक ​​कि अगर नमूने आप नेट का संबंध ASP.NET वेब रूपों पर मिलेगा से ज्यादातर, वहाँ केवल बहुत छोटे मतभेदों को जब MVC के साथ प्रयोग किया जा सकता है।

8

मैं ASP.NET सदस्यता एपीआई विस्तार पर इस अधिकारी Microsoft article से पढ़ना प्रारंभ होगा। यह उपयोगकर्ताओं के बारे में अतिरिक्त जानकारी संग्रहीत करने के लिए अतिरिक्त तालिकाओं के निर्माण के बारे में बात करता है।

सदस्यता डेटाबेस

  1. यदि आप किसी मौजूदा डेटाबेस है जो सभी अपने अन्य वेबसाइट जानकारी रखता है, तो आप आवश्यक उपयोगकर्ता तालिकाओं उत्पन्न करने के लिए aspnet_regsql.exe उपकरण चला सकते हैं। इसके बाद आपको अपने web.config को संशोधित करने और अपनी कनेक्शन स्ट्रिंग के साथ SqlMembershipProvider जोड़ने की आवश्यकता होगी।
  2. यदि आप एक नई परियोजना बना रहे हैं और डेटाबेस नहीं है, तो एक नई एमवीसी परियोजना से शुरू करें जिसमें पहले ही सदस्यता सक्षम है। आपका डेटाबेस पहले उपयोग पर App_Data फ़ोल्डर के अंदर बनाया जाएगा, और आप इसे ले सकते हैं और इसे अपने SQL/SQLEXPRESS सर्वर से संलग्न कर सकते हैं। फिर यह स्थानीय फ़ाइल की बजाय डीबी सर्वर का उपयोग करने के लिए कनेक्शन स्ट्रिंग को बदलने का मामला है।

बनाना अतिरिक्त टेबल

इस भाग वास्तव में काफी आसान है और कुछ ही चरण होते हैं:

  1. एक नई तालिका बनाएँ, यानी USERPROFILES
  2. के रूप में एक uniqueidentifier स्तंभ जोड़ें आपकी प्राथमिक कुंजी, और aspnet_Users तालिका
  3. पर कोई विदेशी कुंजी जोड़ें जो आप स्टोर करना चाहते हैं (फ़ोन, पता, लिंग इत्यादि)
  4. यदि आप LINQ-to-SQL या Entity Framework का उपयोग कर रहे हैं, तो आप डिज़ाइनर पर आवश्यक टेबल को खींच सकते हैं, और आप सदस्यता तालिका से पूछने के लिए तैयार होंगे।

यहाँ उपयोग

पर एक छोटे से नमूना है अपने भंडार प्रोफाइल/खाते की जानकारी के लिए जिम्मेदार को यह स्निपेट जोड़ें।

public aspnet_User GetUser() 
{ 
    MembershipUser user = Membership.GetUser(); 
    return db.aspnet_Users.SingleOrDefault(u => u.UserId == user.ProviderUserKey); 
} 

फिर अपने मॉडल के अंदर, आप उपयोगकर्ता मिलता है और अपने USERPROFILES तालिका में संग्रहीत अन्य जानकारी का उपयोग कर सकते हैं।

AccountRepo accountRepo = new AccountRepo(); 
aspnet_User user = accountRepo.GetUser(); 
string Address = user.UserProfile.Address; // bingo! 

और है कि यह काफी है!

यह स्पष्ट रूप से एक सरल उदाहरण है, और अगर उपयोगकर्ता अशक्त है आप की जाँच की जानी चाहिए और आप भी एक वर्ग के लिए एक उपयोगकर्ता के बारे में आवश्यक जानकारी देने के लिए जिम्मेदार कैशिंग बनाते हैं, को लागू कर सकता है, आदि ..

0

यदि आप अभी भी इस बारे में अंतर्दृष्टि की तलाश में हैं, तो मैं बस इस तथ्य से भाग गया कि एमवीसी 4 वेबपेज साइट्स में, सरल मेमर्सशिप प्रदाता नामक एक प्रदाता है। यह वेबसाइटों पर संग्रहीत उपयोगकर्ताओं, भूमिकाओं और सदस्यता जानकारी के डेवलपर को अधिक नियंत्रण देता है। यहां अधिक: http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx

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