2014-07-26 8 views
17

के भीतर प्राधिकरण की आवश्यकता है, मैं एप्लिकेशन बनाता हूं जहां लॉग इन सक्षम करने वालों के बगल में प्रत्येक कार्रवाई लॉग इन उपयोगकर्ता के लिए सीमा से बाहर होनी चाहिए।पूरे एएसपी .NET एमवीसी अनुप्रयोग

क्या मुझे प्रत्येक कक्षा के शीर्षक से पहले [Authorize] एनोटेशन जोड़ना चाहिए? यहां की तरह:

namespace WebApplication2.Controllers { 
[Authorize] 
    public class HomeController : Controller { 




     public ActionResult Index() { 
      return View(); 
     } 

     public ActionResult About() { 
      ViewBag.Message = "Your application description page."; 

      return View(); 
     } 

     public ActionResult Contact() { 
      ViewBag.Message = "Your contact page."; 

      return View(); 
     } 
    } 
} 

या इसके लिए शॉर्टकट है? क्या होगा यदि मैं विशेष नियंत्रक में एक और केवल कार्रवाई के लिए नियमों को बदलना चाहता हूं?

+0

संभावित डुप्लिकेट की [कर सकते हैं \ [अधिकृत करें]] विशेषता सभी नियंत्रकों के लिए विश्व स्तर पर सेट की जा सकती है?] (Https://stackoverflow.com/questions/22597624/can-the-authorize-attribute-be-set-globally-for-all-controllers) – KyleMit

उत्तर

28

सरल नियंत्रक को प्रत्येक कॉन्फ़िगरर पर लागू करने के लिए फ़िल्टर कॉन्फ़िगरेशन में Authorize विशेषता जोड़ने का सबसे आसान तरीका है।

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 

     //Add this line 
     filters.Add(new AuthorizeAttribute()); 
    } 
} 

एक और तरीका है कि आपके सभी नियंत्रक बेस क्लास से विरासत में हैं। यह कुछ मैं अक्सर करते हैं वहाँ लगभग हमेशा कुछ साझा कोड है कि मेरे नियंत्रकों का उपयोग कर सकते है प्रकार है:

:

[Authorize] 
public abstract class BaseSecuredController : Controller 
{ 
    //Various methods can go here 
} 

और अब के बजाय Controller से इनहेरिट की, अपने नियंत्रकों के सभी इस नए वर्ग के वारिस चाहिए

public class MySecureController : BaseSecuredController 
{ 
} 

नोट:AllowAnonymous विशेषता जोड़ने के लिए मत भूलना जब आपको गैर-लॉग इन उपयोगकर्ताओं के लिए पहुंचने की आवश्यकता हो।

9

DavidG के जवाब पर निर्माण करने के लिए, यदि आप (उदाहरण के लिए, जहां हर कोई अधिकृत है के लिए, Windows authentication में) एक निश्चित भूमिका की आवश्यकता की जरूरत है आप यह कर सकते हैं:

public class FilterConfig 
{ 
    public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorAttribute()); 

     filters.Add(new AuthorizeAttribute { Roles = "MyApp Access" }); 
    } 
} 
+1

भूमिका निर्दिष्ट करना एक बढ़िया जोड़ा है, यह वही है जो मैं ढूंढ रहा था। – Zapnologica

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