2013-10-03 10 views
47

कौन सा अधिकृत विशेषता है?
System.Web.Http.Authorize
System.Web.Mvc.Authorize
System.Web.Http। बनाम System.Web.Mvc. प्राधिकृत

using System.Web.Mvc  // or 
using System.Web.Http 

एक ठेठ नियंत्रक

[Authorize] 
    public class SomeController : Controller 

हम [Authorize] साथ एनोटेट नियंत्रकों है मैं सिर्फ इतना है कि वजह से देखा नामस्थानों का उपयोग एनोटेशन तकनीकी रूप से विभिन्न विशेषता वर्गों का संदर्भ लेते हैं।

इस परियोजना में एमवीसी नियंत्रक और वेबबीआई नियंत्रक शामिल हैं।

मुझे किस का उपयोग करना चाहिए और क्यों? अगर मैं इसे ठीक नहीं करता तो हमारे पास क्या समस्याएं हो सकती हैं?

उत्तर

62

आपको ApiController (वेब ​​एपीआई नियंत्रक) और System.Web.Mvc.Authorize के विरुद्ध Controller (एमवीसी नियंत्रक) के विरुद्ध उपयोग करना होगा। चूंकि ढांचा पाइपलाइन प्रसंस्करण के हिस्से के रूप में फ़िल्टर चलाता है और नियंत्रकों को सही फ़िल्टर लागू करने की उम्मीद है, यदि आप संबंधित फ़िल्टर का उपयोग नहीं करते हैं, तो प्राधिकरण काम नहीं करेगा।

+0

क्या आपके पास एक प्रलेखन संदर्भ है जो इस पर आधारित है? – Mike

+3

@ माइक यह 'सार्वजनिक मुहरबंद वर्ग AuthAttribute लिखकर अनुभवी रूप से प्रदर्शित किया जा सकता है: System.Web.Mvc.AuthorizeAttribute { सुरक्षित ओवरराइड बूल AuthorizeCore (HttpContextBase httpContext) => झूठी; } ', इसे' एपीकंट्रोलर 'पर रखकर, और विजुअल स्टूडियो में ब्रेकपॉइंट सेट करना। निरीक्षण करें कि 'AuthorizeCore' कभी नहीं कहा जाता है और अनुरोध किया जाता है जहां इसे खारिज कर दिया जाएगा। –

+0

यह ध्यान दिया जाना चाहिए कि एमवीसी और वेब एपीआई ** स्वतंत्र ** ढांचे हैं, यही कारण है कि ये दो प्रकार एक दूसरे के बदले नहीं हैं। "ढांचे" को निर्दिष्ट करने का तात्पर्य है कि केवल एक ढांचा है, जो गलत और भ्रामक है। – NightOwl888

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