2011-07-04 14 views
10

में प्राधिकरण नोड मैं जानता हूँ कि मैं web.configअधिकृत विशेषता बनाम web.config

 
    <authentication mode="Windows"></authentication> 
    <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" /> 
    <authorization> 
     <allow roles="MyDomain\MyGroup" /> 
     <deny users="*" /> 
     <deny users="?" /> 
    </authorization> 

में प्राधिकरण टैग का उपयोग कर या एक साथ नियंत्रक आधार वर्ग सजाने एक ASP.NET MVC 3 आवेदन के लिए उपयोग को प्रतिबंधित कर सकते विकल्प और बराबर दृष्टिकोण वे हैं: [अधिकृत()] विशेषता (या यहां तक ​​कि एक कस्टम के साथ अधिकृत विशेषता)

[AdminOnly] 
public class BaseController : Controller{} 

सवाल है? क्या मुझे हमेशा दूसरे के बजाय एक दृष्टिकोण का उपयोग करना चाहिए? मुझे कौन से तत्वों को ध्यान में रखना चाहिए?

उत्तर

10

मैं जानता हूँ कि मैं, web.config

नहीं में प्राधिकरण टैग का उपयोग कर एक ASP.NET MVC 3 आवेदन के लिए उपयोग को प्रतिबंधित कर सकते ASP.NET MVC में इस का उपयोग नहीं करते।

सवाल यह है: क्या वे वैकल्पिक और समकक्ष दृष्टिकोण हैं?

नहीं, वे वैकल्पिक नहीं हैं। आपको ASP.NET MVC एप्लिकेशन में web.config में <authorization> टैग का उपयोग नहीं करना चाहिए क्योंकि यह पथ पर आधारित है, जबकि एमवीसी नियंत्रक कार्यों और मार्गों के साथ काम करता है। एएसपी.नेट एमवीसी में प्रमाणीकरण करने का सही तरीका [Authorize] विशेषता का उपयोग कर रहा है।

+0

उचित। कृपया, मुझे बेहतर समझने दो: अगर मैं टैग का उपयोग नहीं कर रहा हूं, (यानी, पूरे एप्लिकेशन तक पहुंच प्रतिबंधित करना) क्यों और कैसे web.config में प्रमाणीकरण को परिभाषित करना सुरक्षा छेद हो सकता है? –

+0

@ एरियलडो मार्टिनी, स्थान टैग में आप पथ निर्दिष्ट करते हैं: उदाहरण के लिए आप '/ admin' तक पहुंच प्रतिबंधित कर सकते हैं। लेकिन एमवीसी में आपके पास मार्ग हैं। उन मार्गों को Global.asax में परिभाषित किया गया है। वे नियंत्रकों और कार्यों को प्रतिबिंबित करते हैं। तो यह आपके नियंत्रक और क्रियाएं हैं जिन्हें सुरक्षित किया जाना चाहिए, कुछ गैर-आभासी वर्चुअल पथ नहीं। –

+1

हाँ, स्पष्ट। क्या होगा यदि मैं ** ** किसी भी स्थान टैग का उपयोग नहीं करूंगा और मैं सिर्फ ** पूरे ** आवेदन के लिए प्राधिकरण सेट करता हूं? मेरा मतलब है, अगर मैं सवाल में रिपोर्ट की गई वेब.कॉन्फिग का उपयोग करता हूं, जो किसी भी यूआरएल और न ही किसी रूट की रिपोर्ट नहीं करता है? क्या यह एक सुरक्षा छेद का प्रतिनिधित्व कर सकता है, वैसे भी? –

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