2012-06-01 15 views
45

में प्राधिकृत विशेषता मुझे एएसपी.नेट एमवीसी में [Authorize] विशेषता के वास्तविक उपयोग को समझने में कठिन समय है। अवधारणा के अनुसार, यदि हम [Authorize] विशेषता के साथ नियंत्रक विधि को सजाने के लिए, केवल प्रमाणित उपयोगकर्ताओं को नियंत्रकों तक पहुंचने की अनुमति है।एएसपी.नेट एमवीसी

मैंने [Authorize] विशेषता के साथ सजावटी नियंत्रकों के बिना एक एएसपी.नेट एमवीसी अनुप्रयोग विकसित किया है। मैंने जो देखा है, वह है कि यदि मैं web.config या किसी अन्य तरीके से अपने आवेदन में प्रमाणीकरण तंत्र को ठीक से कार्यान्वित करता हूं, तो अब मैं किसी विशेष क्रिया विधि के URL {controller}/{action}/{id} तक पहुंच सकता हूं।

सिस्टम हमेशा लॉगिन के लिए पूछता है। इसका मतलब है कि मेरे नियंत्रक सुरक्षित हैं। मेरा सवाल यह है कि, जब मैं [Authorize] विशेषता का उपयोग किए बिना अपने नियंत्रकों को सुरक्षित कर सकता हूं, तो इसकी वास्तविक आवश्यकता क्या है?

उत्तर

75

वास्तविक शक्ति भूमिका प्रदाता के साथ समझ और कार्यान्वयन सदस्यता प्रदाता के साथ आता है। आप उपयोगकर्ताओं को भूमिकाओं में नियुक्त कर सकते हैं और उस प्रतिबंध के अनुसार आप अलग-अलग उपयोगकर्ता के लिए नियंत्रक क्रियाओं या नियंत्रक के लिए अलग-अलग पहुंच भूमिकाएं लागू कर सकते हैं।

[Authorize(Users = "Betty, Johnny")] 
public ActionResult SpecificUserOnly() 
{ 
    return View(); 
} 

या समूह

[Authorize(Roles = "Admin, Super User")] 
public ActionResult AdministratorsOnly() 
{ 
    return View(); 
} 
+1

answer.But के लिए धन्यवाद एक ही प्रतिबंध है, मैं अपने web.config देखें पृष्ठों उन नियंत्रकों द्वारा दिया जाता है के लिए सदस्यता और भूमिका प्रदाता का उपयोग कर का उपयोग कर लगाया जा सकता है। मुझे इसके लिए [एथोस्रिज] विशेषता का उपयोग करने की आवश्यकता नहीं है। – techmad

+7

@kaus - इंगित करने के लिए एक बात यह है कि एक एमवीसी ऐप में web.config का उपयोग सुरक्षा छेद की संभावना है। अधिकृत विशेषता एएसपी.NET रूटिंग के सभी खातों को ध्यान में रखती है, जबकि web.config के साथ आपको ऐप में सभी संभावित रूटिंग कॉन्फ़िगरेशन जानना होगा और उन्हें ध्यान में रखना होगा। हो सकता है कि आपने इसे सभी ध्यान में रखा हो, लेकिन आप web.config और routing.config और कहीं और देखकर सुनिश्चित नहीं हो सकते हैं। किसी वर्ग पर प्राधिकृत विशेषताओं को देखकर आप जानते हैं कि यह रूटिंग के बावजूद सुरक्षित है। एक्स्टेंसिबिलिटी का उल्लेख करने के लिए – DarrellNorton

9

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

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

8

Authorize विशेषता का उपयोग करना अधिक सुविधाजनक लगता है और अधिक 'एमवीसी रास्ता' लगता है। तकनीकी फायदे के लिए कुछ हैं।

एक परिदृश्य जो मेरे दिमाग में आता है वह तब होता है जब आप अपने ऐप में आउटपुट कैशिंग का उपयोग कर रहे होते हैं। प्राधिकृत विशेषता अच्छी तरह से संभालती है।

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

+1

+1। यह web.config विधि पर एक निश्चित लाभ है। ;) – CptRobby

4

एक फायदा यह है कि आप एप्लिकेशन में पहुंच संकलित कर रहे हैं, इसलिए इसे web.config को संशोधित करने वाले किसी व्यक्ति द्वारा गलती से बदला नहीं जा सकता है।

यह आपके लिए लाभ नहीं हो सकता है, और यह एक नुकसान हो सकता है। लेकिन किसी प्रकार की पहुंच के लिए, यह पसंद किया जा सकता है।

प्लस, मुझे लगता है कि Web.config में प्राधिकरण जानकारी इसे प्रदूषित करती है, और चीजों को ढूंढना कठिन बनाती है। तो कुछ मायनों में इसकी प्राथमिकता, दूसरों में ऐसा करने का कोई और तरीका नहीं है।

11

[Authorize] गुणों का उपयोग करके आपके आवेदन में सुरक्षा छेद को रोकने में मदद मिल सकती है। जिस तरह से एमवीसी यूआरएल को संभालता है (यानी उन्हें वास्तविक फ़ाइल की बजाय नियंत्रक को रूट करना) वेब.कॉन्फिग फ़ाइल के माध्यम से वास्तव में सबकुछ सुरक्षित करना मुश्किल बनाता है।

और पढ़ें यहाँ: http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the-new-allowanonymous-attribute.aspx

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