1

Windows 認証を使用しています。認証は正常に機能します (ユーザーにはロールがロードされます)。

Authorizeカスタムエラーページを提供したいのは、( を使用して)認証が失敗したときです。HandleError属性はスローされた例外に対してのみ呼び出され、エラーステータスコード ( ) に対しては呼び出されないよう>= 300です。

カスタム エラー セクション:

<customErrors mode="On" defaultRedirect="~/Error/">
  <error statusCode="404" redirect="~/Error/NotFound/" />
  <error statusCode="401" redirect="~/Error/NotAuthorized/" />
</customErrors>

ErrorControllerビューを返すを取得しました。しかし、それは決して呼び出されません。

Authorize401 を処理できるようにするには、カスタム属性で例外のスローを開始する必要がありますか? それとも、MVC3 固有のより良い方法がありますか?

4

1 に答える 1

2

をオーバーライドできHandleUnauthorizedRequestますCustomAuthorize

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
                                         {
                                             {"area", ""},
                                             {"controller", "Error"},
                                             {"action", "NotAuthorized"},
                                             {"returnUrl", filterContext.HttpContext.Request.RawUrl}
                                         });
}
于 2012-06-12T11:46:02.390 に答える