2009-04-16 7 views
5

का उपयोग कर एएसपीएनटी एमवीसी ऐप में भूमिका-पदानुक्रम को कैसे कार्यान्वित कर सकता हूं, मेरे एएसपीनेट एमवीसी ऐप में मैं activedirectorymembershipprovider का उपयोग कर रहा हूं। सक्रिय निर्देशिका में मैंने इस उदाहरण की सादगी, "सामान्य" और "व्यवस्थापक" के समान कुछ भूमिकाएं (समूह) बनाई हैं।मैं सक्रिय asirectorymembershipprovider

मैं वर्तमान में पूछताछ कर रहा हूं कि क्या उपयोगकर्ता httpcontext के आईप्रिंसिपल को प्राप्त कर रहा है और उपयोगकर्ता को कॉल कर रहा है। IInInRole (nameOfRoleGoesHere);

मैं जिस व्यवहार की तलाश कर रहा हूं वह यह पूछने में सक्षम है कि उपयोगकर्ता "व्यवस्थापक" भूमिका में है या नहीं और फिर निस्संदेह यह पूछे जा रहे हैं कि उपयोगकर्ता नीचे की सभी भूमिकाओं में है या नहीं (इस मामले में भूमिका "सामान्य" नीचे होगी " व्यवस्थापक ")। मेरी भूमिकाएं मुख्य रूप से ऊर्ध्वाधर हैं (यदि यह कोई समझ में आता है) इस तरह की भूमिका-विरासत इस समय मेरे आवेदन के लिए समझ में आता है।

मैं यह व्यवहार कैसे प्राप्त कर सकता हूं - क्या मुझे कुछ कस्टम तर्क लागू करना चाहिए जो मुझे "व्यवस्थापक" भूमिका निभाने की इजाजत देता है, लेकिन वास्तव में दृश्यों के पीछे सक्रिय निर्देशिका में "सामान्य" और "व्यवस्थापक" दोनों के लिए पूछताछ करना - या सक्रिय निर्देशिका में समूहों को किसी भी तरह से इस व्यवहार को स्वचालित रूप से देना संभव है?

एएसपीनेट, सक्रिय निर्देशिका और .NET सुरक्षा के किसी भी गलत गलतफहमी के लिए माफी माँगता हूं - मैं रूकी और प्रयोग कर रहा हूं।

उत्तर

3

ई एक समूह एक और समूह का सदस्य होने की अवधारणा का समर्थन करता है?

तो तुम हो सकता था निम्नलिखित:

उपयोगकर्ता: ऐनी, बॉब, चार्ली, डगलस, इलियट, फ्रेड और जॉर्ज।

भूमिका: सामान्य, संपादक, व्यवस्थापक

तब में के रूप में प्रत्येक समूह को परिभाषित: है निम्नलिखित सदस्य

व्यवस्थापक: जॉर्ज

संपादक निम्नलिखित सदस्य हैं: "एडमिन", डगलस, इलियट

सामान्य में निम्न सदस्य हैं: "संपादक", "व्यवस्थापक", ऐनी, बॉब, चार्ली

इसलिए, आप जानते हैं कि जॉर्ज सामान्य, संपादक और व्यवस्थापक का सदस्य है, क्योंकि व्यवस्थापक के सभी सदस्यों को उन समूहों में शामिल किया गया है, जबकि डगलस केवल संपादक और सामान्य के सदस्य हैं, और ऐनी सिर्फ एक सामान्य उपयोगकर्ता है, और एडी कहेंगे "हां, जॉर्ज एक सामान्य उपयोगकर्ता" है यदि आपने इसे पूछा।

हालांकि: वहाँ एक अधिकारी नहीं है (जैसा कि तक मुझे पता है) है, एमएस समर्थित ActiveDirectory RoleProvider कि सही ई भूमिकाओं के साथ RolesPrinciple हो जाएगी - एक जोड़े like this one on CodePlex क्या आप परिभाषित किया गया है वहाँ बाहर देखते हैं आपकी भूमिका प्रदाता के रूप में?

डिफ़ॉल्ट ASP.NET भूमिका प्रदाता तो आप या तो की आवश्यकता होगी या तो करने के लिए भूमिका पदानुक्रम का समर्थन नहीं करता,:

  1. प्रत्येक भूमिका वे के लिए उपयोग किया में उपयोगकर्ता रखो, और केवल भूमिका आप के लिए जाँच में रुचि रखते हैं।
  2. उपयोगकर्ता को सबसे शक्तिशाली भूमिका में डाल दें, और उसके बाद पहुंचने वाली प्रत्येक भूमिका की जांच करें।
  3. पदानुक्रमों का समर्थन करने वाले role provider लिखें/ढूंढें - यदि उपयोगकर्ता उच्च क्रम में भूमिका निभाता है तो सही लौटकर।
+1

जब आपने सामान्य भूमिका/समूह को परिभाषित किया, तो क्या आपको उस समूह के सदस्य के रूप में "व्यवस्थापक" शामिल करने की आवश्यकता थी? (मेरा अनुमान ऐसा नहीं है क्योंकि व्यवस्थापक पहले से ही संपादक समूह में शामिल है जो सामान्य समूह में है। – Guy

+0

शायद ईमानदार होने के लिए, लेकिन मैं क्षमा के बजाय सुरक्षित था;) –

1

सक्रिय निर्देशिका में वास्तव में सदस्यता के मामले में पदानुक्रम की अवधारणा नहीं है। उपयोगकर्ता एक, कई, कई समूहों का सदस्य होता है - लेकिन बस यही। वह "व्यवस्थापक" समूह का सदस्य है - हां या नहीं। वह ग्रुप ए, ग्रोपू बी, ग्रुप एफ और ग्रुप एम के सदस्य भी हो सकते हैं - लेकिन जैसा कि आप ढूंढ रहे हैं, वहां कोई वास्तविक "भूमिका पदानुक्रम" नहीं है।

मुझे लगता है कि, किसी भी तरह से, समूह सदस्यता की किसी भी संख्या को गठबंधन करने की क्षमता रखने की क्षमता शायद मेरी राय में पदानुक्रम होने से भी अधिक लचीला और भरोसेमंद है।

मार्क