何が起こっているのかというと、カスタム認証属性の HandleUnauthorizedRequest メソッドのオーバーライド内に条件があるということです。この時点まで、私は 403 をスローしており、それが検出されてカスタム エラー ページにリダイレクトされます。さて、それは私が本当に欲しいものではありません。私が実際に望んでいるのは、同じログイン ページを表示することですが、検証の概要に「このリソースへのアクセス権がありません。」というメッセージを追加することです。これにより、もう少しユーザー フレンドリーになります。あなたの評判は良かったが、あなたはここに属していないことを示しています。
私はこのようなものがうまくいくと思った:
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
// passed authentication, failed authorization
if (filterContext.HttpContext.User.Identity.IsAuthenticated)
{
filterContext.Controller.ViewData.ModelState.AddModelError("", "Not Authorized");
return;
}
base.HandleUnauthorizedRequest(filterContext);
}
しかし、これは機能していません。何が起こっているかというと、ログイン ページが単にリロードされるだけです。これにより、私は近づいているように感じますが、モデルエラーが表示される必要があります。
何か案は?
更新:ここにエラーを追加しているコントローラーは、実際には、ここにつながった属性を持つアクションのコントローラーであるように思われます。どうにかしてログインコントローラーにエラーを追加する必要があります。それが可能かどうかはわかりません。