私のMVC4インターネットアプリケーションでは、ロールなどとともにデフォルトで付属する AccountController を使用しています.
したがって、アクションにアクセスするためのロールを定義したこのコントローラーがあります。以下の例をご覧ください。
public class SomeController : Controller
{
private SomeDbContext db = new LookbookDbContext();
//
// GET: /Default1/
[Authorize(Roles = "Administrator")]
public ActionResult Index()
{
return View(db.SomeTable.ToList());
}
...
}
私が今望んでいたのは、ユーザー/匿名がこの Index アクションにアクセスしようとすると、ログインフォームを表示する代わりに、作成したカスタムエラービューを取得することです。
これを追加しましたが、何もしません。ログインフォームページを取得し続けます。ポルパスをテストするために、デフォルトの 401 エラー ページが表示されるように変更しましたが、どちらも機能しません。
public class CustomAuthorize : AuthorizeAttribute
{
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new HttpUnauthorizedResult();
}
}