2009-03-29 15 views
7

यदि मुझे अपनी खुद की MembershipProvider कक्षा को कार्यान्वित करने की आवश्यकता है, तो मुझे अपनी सभी आवश्यक सेवाओं को लागू करना होगा, इसलिए MembershipProvider व्युत्पन्न कक्षा को लागू करके मुझे अपना लाभ क्या है, बस अपना खुद का MySecurity कक्षा लिखना?ASP.NET में कस्टम सदस्यता प्रदाता के क्या फायदे हैं?

उत्तर

6

एक प्रमाणीकरण प्रणाली सही हो रही है, कठिन है यह कुछ है कि केवल प्रकट होता है काम करने के लिए निर्माण करने के लिए बहुत आसान है क्योंकि। आप खुद को ऐसे परिस्थिति में नहीं ढूंढना चाहते हैं जहां तैनाती के एक साल बाद आप अंततः खोज लें कि आपकी प्रणाली छह महीने पहले टूट गई थी।

MembershipProvider मॉडल का उपयोग करके अपने सिस्टम का निर्माण करना आपको एक कंकाल प्रदान करके सही तरीके से करने में मदद करता है जो स्वयं को सही ढंग से लागू करने के लिए उधार देता है। आपको केवल विधियों के एक सेट को सटीक रूप से भरने की आवश्यकता है, और यह सुनिश्चित करने के लिए कि आप सही जगहों पर सही तरीकों का उपयोग कर रहे हैं, आप उच्च स्तरीय आर्किटेक्चर पर भरोसा कर सकते हैं।

व्यक्तिगत विधि कार्यान्वयन प्राप्त करना दाएं तुलनात्मक रूप से आसान है। आप उन्हें अपने यूनिट टेस्ट में डाल सकते हैं और विश्वास कर सकते हैं कि वे जो करते हैं वो करते हैं।

एक और तरीका रखें, आपको इस बारे में चिंता करने की ज़रूरत नहीं है कि आप सही जगहों पर अपना प्रमाणीकरण टोकन जांचते हैं या नहीं। एएसपी.Net के कुछ हिस्सों जो सदस्यता प्रदाता में कॉल करते हैं, उन्हें पता है कि यह कब करना है। आपको बस इतना करना है कि चेक सही तरीके से कार्यान्वित करें, और यह सामान्य रूप से एक साधारण तुलना में आता है।

इसके अतिरिक्त, आपको स्क्रैच से शुरू करने की आवश्यकता नहीं हो सकती है। आपको किसी मौजूदा प्रदाता से उत्तराधिकारी का विकल्प चुनना है और केवल उस कार्यक्षमता को जोड़ना है जिसे आप चाहते हैं कि यह पहले से प्रदान नहीं करता है।

+0

हां, लेकिन क्या मुझे विधिओं के लिए आपूर्ति करने के लिए कोड में प्रमाणीकरण प्रणाली प्राप्त करने की जानकारी नहीं है? मैं पूरी तरह से समझता हूं, उदा। मौजूदा SqlMembershipProvider _ _ का उपयोग करने का लाभ, लेकिन अगर मुझे उदा। एक एक्सेस एक, मुझे अभी भी इसे _all_ कोड करने की आवश्यकता है। – ProfK

+0

आपको इसे स्वयं कोड करने की आवश्यकता नहीं है: ASP.Net में कोड है जो एक प्रदाता में कॉल करता है जिसे आप सही होने पर भरोसा कर सकते हैं, और आप उत्तराधिकारी/विस्तार और मौजूदा प्रदाता कर सकते हैं। व्याख्या करने के लिए मेरा जवाब अपडेट किया गया। –

+0

@ जोएल, धन्यवाद। मुझे शायद बड़ी तस्वीर को और अधिक देखना होगा, और देखें कि मेरे प्रदाता कहां और कैसे उपयोग किए जाएंगे, क्योंकि अगर यह सिर्फ मेरे रूपों को स्पष्ट रूप से बुला रहा है, तो मुझे अनिवार्य रूप से स्क्रैच से शुरू करना होगा क्योंकि लगभग सभी बेस क्लास विधियां सार हैं और खाली – ProfK

0

अच्छा, यह निर्भर करता है ... मुझे यह बहुत उपयोगी लगता है क्योंकि मुझे कार्यों की अवधारणा को जोड़ना था, ताकि प्रत्येक भूमिका में उनके साथ जुड़े कार्यों को और आगे भी किया जा सके।

उस मामले में मैं अपने ही सदस्यता और RoleProvider वर्ग है जो निहित AddFunctionToRole विधि ... IsFunctionAssignedToUser विधि ... आदि आदि लागू किया

लेखन की कि here

1

मुख्य लाभ के बारे में एक छोटे से अधिक जानकारी आपकी अपनी सदस्यता प्रदाता वर्ग यह है कि इसे एएसपी.NET द्वारा प्रथम श्रेणी के घटक के रूप में माना जाता है और आप प्रमाणीकरण और प्रमाणीकरण के लिए मानक इंटरफेस का उपयोग कर सकते हैं और यदि आप किसी भिन्न प्रदाता का उपयोग करना चाहते हैं तो केवल बाद में कॉन्फ़िगरेशन फ़ाइल को बदलना होगा।

2

यदि आपको केवल डिफ़ॉल्ट सदस्यता प्रदाताओं में से किसी एक से "थोड़ा" कुछ चाहिए तो आपको शायद अंतर्निहित प्रदाताओं में से एक या बेहतर तृतीय पक्ष प्रदाताओं में से एक से विरासत में विचार करना चाहिए और इसे अतिरिक्त के साथ विस्तारित करना चाहिए कार्यक्षमता जो आपको चाहिए या उस कार्यक्षमता को ओवरराइड करें जिसे आप बदलना चाहते हैं।

1

तकनीकी रूप से, आपको मौजूदा मॉडल का उपयोग करके पोर्टेबिलिटी के कुछ स्तर प्राप्त करना चाहिए - आप अपने प्रदाता सिस्टम को बहुत कम प्रयास के साथ बदलने के लिए अपने प्रदाता को अन्य वेब अनुप्रयोगों में छोड़ने में सक्षम होना चाहिए।

दुर्भाग्य से, सदस्यता/प्रोफाइल की बात आने पर तीसरे पक्ष की संख्या अपने स्वयं के तरीके से चली गई है, और यह भी निराशाजनक है, जब आप कुछ आधारित लिखने में सभी प्रयास करते हैं इस पर।

कहा जा रहा है कि, सदस्यता प्रदाता मॉडल का उपयोग करके, अन्य सभी नियंत्रण जो सदस्यता का उपयोग करते हैं, "बस काम करें" (यानी लॉगिन, लॉगिनस्टैटस, लॉगिन नाम, आदि) उन लोगों के कस्टम संस्करणों को लिखने के बिना भी।

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