में इसे पारित मैं निम्नलिखित की तरह एक कस्टम AuthorizationFilter का उपयोग करें:ActionName, ControllerName और AreaName जाओ और ActionFilter गुण
public class ActionAuthorizeAttribute : AuthorizeAttribute {
protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext) {
if(!httpContext.User.Identity.IsAuthenticated)
return false;
if(IsUserExcluded())
return false;
else
return IsRoleAuthorize(httpContext);
}
}
मैं प्रत्येक कार्य मेरे पास है के शीर्ष पर इस फिल्टर का उपयोग, और के लिए चेक के लिए अधिकृत है, कार्रवाई का नाम, नियंत्रक का नाम, और क्षेत्र का नाम चाहिए। तो AuthorizeCore()
विधि जैसे System.Web.HttpContextBase
पर इस नाम को पाने का कोई तरीका है? यदि जवाब नहीं है तो मैं इस नाम कैसे मिलता है और उसका श्रेय देना, स्पष्ट रूप से मैं एक नाम नियंत्रकों में वास्तव में ViewContext.RouteData.Values["Controller"]
की तरह कुछ है, हाथ से जोड़ने के लिए नहीं करना चाहती पारित कर सकते हैं:
[ActionAuthorize(actionName=Action, controller=ControllerName, area=AreaName)]
public ActionResult Index() {
return View();
}
किसी भी एक किसी भी विचार है इसके बारे में?
"आप उन्हें RouteData से ला नहीं सकता है" काम करेंगे नहीं है एक अच्छा जवाब ** अब ** इसे संपादित किया गया था, मैं वापस आऊंगा। – gdoron
यह सिर्फ एएसपी.नेट एमवीसी 4 में हो सकता है, लेकिन क्षेत्र rd.DataTokens ["क्षेत्र"] में पाया जाता है। –
आपको लाइन var rd = httpContext.Request.RequestContext.RouteData को बदलना चाहिए; var rd = HttpContext.Current.Request.RequestContext.RouteData; एक पैरामीटर से मानक एक का उपयोग करने के लिए बेहतर :) –