2015-05-20 6 views
8

मेरे पास 10 सार्वजनिक विधियों के साथ ApiController कक्षा है।क्या क्लास-स्तरीय AuthorizeAttribute से बाहर निकलने का तरीका है?

उन 10 तरीकों में से नौ को [Authorize(Roles="Admin")] की आवश्यकता होती है। जो नहीं करता है, उसे किसी प्राधिकरण की आवश्यकता नहीं होती है।

यदि यह उस विधि के लिए नहीं था जिसे प्राधिकरण की आवश्यकता नहीं है, तो मैं ApiController कक्षा [Authorize(Roles="Admin")] के साथ सजाने के लिए तैयार करूंगा।

कक्षा स्तर के बजाय, मैं उसी [Authorize(Roles="Admin")] के साथ सभी नौ विधियों को सजा रहा हूं और [Authorize(...)] के साथ एक ही विधि को सजा नहीं रहा हूं।

मुझे इस बारे में क्या पसंद नहीं है कि मुझे उसी [Authorize(Roles="Admin")] को नौ बार दोहराना होगा।

है वहाँ एक रास्ता है कि मैं बजाय अभी भी [Authorize(Roles="Admin")] साथ वर्ग को सजाने कर सकते हैं और केवल एक विधि है कि एक विशेषता के साथ [Authorize(Roles="Admin")] नहीं होना चाहिए की तरह "कुछ का मतलब है कि के लिए वर्ग स्तर कार्रवाई फिल्टर लागू नहीं है सजाने यह विशिष्ट विधि "?

उत्तर

10

आप [AllowAnonymous] विशेषता का उपयोग कर सकते हैं। जब मैंने वेबसाइट पूर्वावलोकन में थी, तो मैंने लॉग इन एक्शन पर ऐसा किया है, उदाहरण के लिए, कोई भी लॉगिन पेज देख सकता है, लेकिन जब तक वे लॉगिन नहीं करते हैं, तब तक कोई भी साइट नहीं देख सकता। यह क्लाइंट के लिए एक आसान कामकाज था :-)

असल में मैंने एक कस्टम विशेषता भी लिखी जो डेटाबेस से सेटिंग पढ़ता है, इसलिए यदि आप मेरा मतलब समझते हैं तो मैं वेबसाइट को "लॉकडाउन" में डाल सकता हूं।

+0

तो विधि पर '[अनुमति दें अनाम]' कक्षा पर '[अधिकृत करें]' का अधिग्रहण करेगा, हां? – core

+0

यह सही है। यहां देखें: http://weblogs.asp.net/jongalloway/asp-net-mvc-authentication-global- प्रमाणीकरण-and-allow- अनामित –

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

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