2010-01-14 8 views
6

से संबंधित है, शायद मैं इसे गलत तरीके से देख रहा हूं और कार्रवाई फ़िल्टर में सबकुछ कर रहा हूं, इस मामले में कृपया मुझे सही दिशा में इंगित करें!एएसपी.नेट एमवीसी जांचें कि क्या उपयोगकर्ता [x] समूह

मैं अपने ASP.NET MVC आवेदन सेट कर रहा हूं ताकि एक HomeController सूचकांक कार्रवाई, सामग्री के दो अलग अलग प्रकार उद्धार तो जैसे:

if(Request.IsAuthenticated) 
    return View("IndexRegistered"); 
else 
    return View("IndexGuest"); 

यह ठीक है, लेकिन कहते हैं कि मैं इस पर विभाजित करना चाहते हैं तीन तो प्रशासक के सदस्यों को उनके स्वयं के पृष्ठ मिलता है ...

if(Request.IsAuthenticated) 
{ 
    if(/* user is a member of administrators */) 
    return View("IndexAdministrator"); 
    else 
    return View("IndexCustomer"); 
} 
else 
    return View("IndexGuest"); 

कोई इस पहेली का लापता टुकड़ा के रूप में मेरे प्रबुद्ध कर सकते हैं?

उत्तर

20

अधिकृत Action Filter की Roles संपत्ति का उपयोग करें:

[Authorize(Roles="Administrators,Moderators")] 
public ActionResult SomeAction(){ 

} 

या User.IsInRole() विधि का उपयोग करें:

if(User.IsInRole("Administrator")) { ... } 
+0

http://blog.wekeroad.com/blog/aspnet-mvc-securing-your-controller-actions/ –

+3

अगर (User.IsInRole ("व्यवस्थापक")) बिल्कुल वही था जो मुझे चाहिए, धन्यवाद! अभी भी इनपुट करने के लिए खुला है यदि ऐसा करने का एक बेहतर तरीका है। प्राधिकरण का उपयोग करने के पहले उदाहरण में, ऐसा लगता है कि यह मेरे लिए एक बेहतर तरीका होगा (हालांकि मैं वास्तव में क्यों नहीं कर सकता) सिवाय इसके कि मैं इसे समझता हूं, यह केवल एक कंबल की अनुमति देता है/अस्वीकार करता है, कई स्थितियों में नहीं मैं क्या कर रहा हूँ – nathanchere

+0

आप भूमिका संपत्ति में कई भूमिकाएं जोड़ सकते हैं, मैं कोड अपडेट कर दूंगा। –

2

आप प्रमाणीकरण प्रदाता को देखें, तो जो बाहर के बॉक्स में आता है डिफ़ॉल्ट एमवीसी प्रोजेक्ट टेम्पलेट्स में अपनी भूमिका का समर्थन करना आसान है और इसे सत्र में ट्रैक करना आसान है, इसलिए उपरोक्त आपका कोड बन जाएगा:

if(Request.IsAuthenticated) 
{ 
    if(Session["Role"] == "Administrator") 
    return View("IndexAdministrator"); 
    else 
    return View("IndexCustomer"); 
} 
else 
    return View("IndexGuest"); 

और उसके बाद की तरह संभावनाओं को खोलता है:

if(Request.IsAuthenticated) 
    return View("Index" + Session["Role"]); 
else 
    return View("IndexGuest"); 
संबंधित मुद्दे