ドメイン認証で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つの同じ許可エラーでの異なるコントローラーの異なるエラーページ