2009-07-02 3 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 
{ 
} 

и результат пустой страницы, когда я не уполномочен?

Это поведение по умолчанию? если да, то где я могу его изменить, чтобы создать сообщение unauth?

ответ

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

Вы можете переопределить HandleUnauthorized как AuthorizeCore, чтобы перенаправить на страницу NoAccess.

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 

     filterContext.Result = new RedirectToRouteResult(
            new RouteValueDictionary { 
           { "controller", "NoAuthPages" },  
           { "action", "NoAccess" }          
           }); 
    } 
Смежные вопросы