2012-09-21 16 views
5

कॉल करने से पहले अधिकृत किया गया है, जिस समस्या को मैं हल करने का प्रयास कर रहा हूं वह मेरे लिए बहुत आसान लगता है: मेरे एप्लिकेशन में एक साइट-व्यापी मेनू है जिससे उपयोगकर्ता विभिन्न क्षेत्रों में नेविगेट कर सकता है। मेनू आइटम केवल ActionResult विधियों के लिंक हैं। मैं उपयोगकर्ता की प्राधिकरण भूमिकाओं को लागू करने के लिए कार्यों पर एक कस्टम AuthorizeAttribute का उपयोग कर रहा हूँ। यह ठीक काम करता है, जिसमें उपयोगकर्ता को कार्रवाई को निष्पादित करने से रोकता है यदि उनके पास उपयुक्त भूमिकाएं नहीं हैं। मैं जो करना चाहता हूं, वह उस क्रिया को नेविगेट करने के लिए मेनू विकल्प भी नहीं दिखाता है अगर वे इसे करने के लिए अधिकृत नहीं हैं।यह निर्धारित करें कि नियंत्रक कार्रवाई को

तो, सरलतम स्तर पर, मैं इस तरह कुछ करने के लिए सक्षम होना चाहते हैं:

var isAuthorized = IsAuthorized("ControllerName", "ActionName", currentUser); 

IsAuthorized विधि तो कार्रवाई पर किसी भी AuthorizeAttributes पर विचार करेंगे, और मूल्यांकन दिए गए उपयोगकर्ता होगा कि क्या इसे निष्पादित करने में सक्षम

क्या ऐसा दृष्टिकोण मौजूद है? मान लें कि हमारे पास इस बिंदु पर नियंत्रक का एक उदाहरण नहीं है कि हम यह मूल्यांकन कर रहे हैं।

+0

"एक कस्टम' AuthorizeAttribute' "- क्या आपका मतलब है कि आपने स्वयं को लिखा है, या क्या यह उस नाम से निर्मित है? –

+0

हां, एक जिसे मैंने खुद को विशिष्ट प्राधिकरण आवश्यकताओं को लागू करने के लिए लिखा था। जैसा कि, "पब्लिक क्लास MyAuthorizeAttribute: AuthorizeAttribute" – Dan

उत्तर

5

इस दृष्टिकोण के लिए खोज में एक दूसरा पास वास्तव में वही था जो मैं खोज रहा था। अगर मैं दूसरों को इस जवाब में ले जाता हूं तो मैं इस सवाल को यहां छोड़ दूंगा।

Create an authorized action link extension for ASP.NET MVC 3

कार्यान्वयन के बारे में वास्तव में वाक्य रचना मैं खोज रहा था का उपयोग करता है, और व्यवहार में काम करता है।

+0

आपको इसे उत्तर के रूप में चिह्नित करना चाहिए, भले ही आप उत्तर देने वाले हों। – labilbe

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