2009-07-02 9 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

あなたは、エラー401のリダイレクトを含めるようにweb.configファイルを編集することで、ページにリダイレクトすることができます:

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

AuthorizeCoreのようにHandleUnauthorizedをオーバーライドして、NoAccessページにリダイレクトすることができます。

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 

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