2009-07-02 10 views
8

Wenn ich für eine Controller-Aktion nicht autorisiert bin, erhalte ich eine leere Seite und keine Fehlermeldung? Ich möchte eine Nachricht von einer Art anzuzeigen, hier mein Setup:asp.net mvc Nicht autorisierte Antwort ist leere Seite?

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

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

als

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

und das Ergebnis ist leere Seite, wenn ich nicht autorisiert?

Ist das das Standardverhalten? Wenn ja, was ändere ich, um eine unauth-Nachricht zu erzeugen?

Antwort

8

Ja, das ist das Standardverhalten, wenn sie in dem ASP.Net Development Server ausgeführt wird:

ASP.Net MVC Authorisation action filter

Sie können es auf einer Seite umleiten, indem die web.config Bearbeitung eine Umleitung für Fehler 401 enthalten :

2

Sie können HandleUnauthorized wie AuthorizeCore überschreiben, um Redirect auf NoAccess-Seite zu sagen.

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 

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