2009-07-02 12 views
8

अगर मैं नियंत्रक कार्रवाई पर अधिकृत नहीं हूं, तो मुझे एक खाली पृष्ठ मिल रहा है और कोई त्रुटि संदेश नहीं है? मैं किसी प्रकार की एक संदेश प्रदर्शित करना चाहते हैं, यहाँ मेरी सेटअप है:asp.net mvc अधिकृत प्रतिक्रिया खाली पृष्ठ नहीं है?

class MyAuth : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (!httpContext.User.Identity.IsAuthenticated) 
      return false; 

     return MyIsCurrentUserInRoles(Roles.Split(",".ToCharArray())); 
    } 
} 

[Myauth(Roles="admin")] 
class MyController: Controller 
{ 
} 

रूप में इस्तेमाल किया और परिणाम रिक्त पृष्ठ जब मैं अधिकृत नहीं कर रहा हूँ है?

क्या यह डिफ़ॉल्ट व्यवहार है? यदि हां, तो मैं एक अज्ञात संदेश बनाने के लिए इसे कहां बदलूं?

उत्तर

8

हाँ, इस डिफ़ॉल्ट व्यवहार तब होता है जब ASP.Net विकास सर्वर में चल रहे:

ASP.Net MVC Authorisation action filter

आप संपादन web.config द्वारा एक पृष्ठ के लिए यह अनुप्रेषित कर सकते हैं त्रुटि 401 के लिए एक रीडायरेक्ट शामिल करने के लिए :

<customErrors defaultRedirect="ErrorPage.aspx" mode="On"> 
    <error statusCode="401" redirect="AccessDenied.aspx" />  
</customErrors> 
2

आप NoAccess पृष्ठ पर रीडायरेक्ट कहना AuthorizeCore तरह HandleUnauthorized ओवरराइड कर सकते हैं।

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 

     filterContext.Result = new RedirectToRouteResult(
            new RouteValueDictionary { 
           { "controller", "NoAuthPages" },  
           { "action", "NoAccess" }          
           }); 
    }