1

ドメイン認証でmvcイントラネットテンプレートを使用しているときに、コントローラーに応じて認証の失敗に関する特定のエラーページにリダイレクトするにはどうすればよいですか?

だから、私はコントローラークラスを持っています:

    [AuthorizeWithRedirect(Users = @"user")]
    public class MyController : Controller
    {
    ...
    }

デフォルトでは、どこにもリダイレクトされません。別のユーザーの下でページを開くと、空白のページしか表示されません。問題は、承認が失敗した場合に、リクエストを異なるコントローラーの異なるページにリダイレクトしたいということです。つまり、あるページはMyController、他のコントローラ用の別のページなどです。

メソッドから派生しAuthorizeAttributeてオーバーライドできることはわかっていますHandleUnauthorizedRequest。しかし、私はそれを機能させることはできません:

public class AuthorizeWithRedirect : AuthorizeAttribute
{
   protected override void HandleUnauthorizedRequest(AuthorizationContext context)
   {
       UrlHelper urlHelper = new UrlHelper(context.RequestContext);
       context.Result = new RedirectResult(urlHelper.Action("MyErrorPage"));
   }
}

指定されたURLが見つからないというエラーが表示されますMyErrorPage.cshtmlが、フォルダには存在しViews\Sharedます。

編集

    [Authorize(Users = @"user")]//should be redirected to ErrorPage1
    public class MyController1 : Controller
    {
    ...
    }

その間

    [Authorize(Users = @"user")]//should be redirected to ErrorPage2
    public class MyController2 : Controller
    {
    ...
    }

つまり、1つの同じ許可エラーでの異なるコントローラーの異なるエラーページ

4

2 に答える 2

-1

ログインメソッドの上にHandleErrorDataAnnotationを使用する

[HandleError]
public ActionResult Login()
{
    //your action method
}
于 2012-10-10T07:37:39.253 に答える