2008-12-19 10 views
8

मैं निम्नलिखित आवश्यकताओं के साथ अपने एएसपी.NET एप्लिकेशन में प्रमाणीकरण बनाने की सोच रहा हूं।एएसपी.नेट: अनुमति/प्रमाणीकरण आर्किटेक्चर

  • एक उपयोगकर्ता ठीक एक भूमिका है (अर्थात व्यवस्थापक, SalesManager, बिक्री, ....)
  • एक भूमिका मौजूदा वस्तुओं के एक सबसेट CRUD उपयोग करने के लिए अनुमति का एक सेट है। अर्थात। "बिक्री ने ऑब्जेक्ट प्रकार" उत्पाद "पर लिखने की अनुमति दी है, लेकिन"
  • किसी भी तरह से मुझे विरासत के साथ पदानुक्रम में अनुमतियां पसंद हैं ताकि मैं व्यवस्थापक के लिए सभी उपलब्ध वस्तुओं को निर्दिष्ट करने की आवश्यकता न हो ।
  • प्रणाली जल्दी से सवाल का जवाब देने में सक्षम होना चाहिए "क्या उपयोगकर्ता X Y Z आपत्ति करने के लिए क्या करने की अनुमति"
  • सभी डेटाबेस में कामयाब (MSSQL), सी # में लागू/ASP.NET

मैं इन आवश्यकताओं पर प्रतिक्रिया प्राप्त करना चाहते हैं? एएसपी.NET ढांचे (जितना संभव हो सके) का उपयोग करके इसे लागू करने के लिए कोई विचार? (हालांकि, मुझे यह जानने में भी दिलचस्पी है कि इसे सदस्यता के बिना कैसे हासिल किया जा सकता है)

उत्तर

6

मुझे लगता है कि आपको यहां क्या करना है, यह आपके व्यावसायिक ऑब्जेक्ट्स या आपके नियंत्रक में अनुमति क्वेरी विधियों का एक सेट लागू करना है। उदाहरण: CanRead(), CanEdit(), CanDelete()

जब पृष्ठ प्रस्तुत करता है, तो उसे व्यवसाय ऑब्जेक्ट से पूछताछ करने और उपयोगकर्ताओं को अधिकृत क्षमताओं को निर्धारित करने और इस जानकारी के आधार पर कार्यक्षमता को सक्षम या अक्षम करने की आवश्यकता होती है। व्यावसायिक वस्तु सक्रिय रूप से सक्रिय उपयोगकर्ता की अनुमतियों को निर्धारित करने के लिए भूमिकाओं या अतिरिक्त डेटाबेस क्वेरीज़ का उपयोग कर सकती है।

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

कुछ कोड है जो रॉकी लोत्का की पुस्तक में इस मॉडल का उपयोग करते हैं। नया संस्करण अभी तक Google में नहीं है।

1

एएसपी.NET 2.0 के बाद से प्रदान की गई सदस्यता API आपकी आवश्यकताओं को अच्छी तरह से अनुरूप करनी चाहिए। केवल एक चीज जिसे मैं डरता हूं वह सीधे समर्थन नहीं करता है पदानुक्रमित भूमिका है। हालांकि आप आवश्यक चीजों को प्राप्त करने के लिए आसानी से सामान्य भूमिका आधारित सुरक्षा का उपयोग किसी अन्य मैन्युअल रूप से लिखित पदानुक्रमित भूमिका तालिका के साथ कर सकते हैं।

1

आप कैसे ASP.NET सदस्यता यहां स्थापित करने के लिए पर पढ़ सकते हैं: http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

यह आप समूह फ़ोल्डरों/पृष्ठों समूह/उपयोगकर्ता में आदि करने के लिए अनुमति देता है। मुझे लगता है कि आपको यह पर्याप्त मिलेगा!

हाइलार्की आसानी से जेनरेट किए गए डेटाबेस और प्रक्रियाओं को विस्तारित करके प्रबंधित किया जाता है।

2

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

मैं इस तरह के सिस्टम पर काम कर रहा हूं और इसे खुश करने के बाद इसे ब्लॉग कर दूंगा।

1

मैं करता है कि आप चाहते हैं चाहते CodePlex पर एक प्रोजेक्ट बना दिया है: http://www.michaelalbaladejo.com/Projects/ASP-Net-Permission-Management-Part-1

+0

यूआरएल टूटा हुआ है .. –

+0

http://permissionmanager.codeplex.com/ –

+0

http://www.michaelalbaladejo.com/post/2010/03/30/ASP- नेट- अनुमति- प्रबंधन- भाग -1। एएसपीएक्स –

0

मैं उपयोगकर्ता/भूमिका संबंध बनाने हैं उन 1 से अधिक भूमिका हो सकती है इसलिए। मुझे 1-1 रिश्ते दिखाई देता है और मुझे घबराहट होती है क्योंकि मुझे पता है कि अगर हमें इसकी आवश्यकता नहीं दिखाई देती है, तो कोई भी किसी को किसी विक्रय उपयोगकर्ता और ग्राहक सेवा उपयोगकर्ता दोनों बनना चाहता है।

हमारे ग्राहक प्रणाली में, हम "अपराधी ग्राहक" जैसी सामग्री पर भूमिकाओं के लिए भूमिकाओं का उपयोग करते हैं। इस तरह, मूल अनुमतियां अभी भी मान्य हैं - जैसे ही वे अपने बिल का भुगतान करते हैं। इस दृष्टिकोण पर विचार करने लायक है।

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