コントローラ上ではなく動作しますカスタムAuthorizeAttributeは、私は、カスタムAuthorizeAttributeを作成する方法
public AjaxAwareAuthorizeAttribute : AuthorizeAttribute {
public override void OnAuthorization(AuthorizationContext filterContext) {
base.OnAuthorization(filterContext);
if(filterContext.Result is HttpUnauthorizedResult && filterContext.HttpContext.Request.IsAjaxRequest()) {
filterContext.HttpContext.Items["RequestWasNotAuthorized"] = true;
}
}
}
私はコントローラクラスにこれを適用するとOnAuthorizationイベントが発射されると予想されるように上記のハンドラが実行されますが、それが適用されるときコントローラ内のどのメソッドにも、何も起こりません!
私のマシンで動作します。コントローラのメソッドがヒットしたことは確かですか?彼らは到達可能ですか?あなたはステップスルーできますか?私は確かにできる。 –
はいコントローラメソッド内にブレークポイントが設定されていて、ヒットしていますが、属性内のOnAuthorizationメソッドが実行されることはありません。おそらく、最初にそれをコード化したときに、これが動作していたと私は確信しています。コードはhttp://trycatchfail.com/blog/post/Handling-Authorization-Failures-for-AJAX-Requests-in-ASPNET-MVC-Applications.aspx – Mike
の属性/バリデータークラスをアプリに登録しましたブートストラップまたはGlobal.asax? – BentOnCoding