ajaxからのリダイレクトを適切に処理するために、このPrevent Forms認証に従いました。ただし、特定の属性がこの呼び出しが行われたアクションを装飾しているかどうかを判断できるようにする必要があります。これは、場合によってのみ行いたいためです。このメソッド内でアクセス可能なHttpRequestオブジェクトからこの情報を取得できますか?
基本的に、上記のコードから操作したい部分を取り出します。
public class SuppressFormsAuthenticationRedirectModule : IHttpModule {
private void OnPostReleaseRequestState(object source, EventArgs args) {
var context = (HttpApplication)source;
var response = context.Response;
var request = context.Request; // request is HttpRequest
if (response.StatusCode == 401 && request.Headers["X-Requested-With"] ==
"XMLHttpRequest") {
// TODO HERE: Check that the controller action contains a particular attribute
// and if so do not suppress redirect
SuppressAuthenticationRedirect(context.Context);
}
}
}
更新: このコードは、コンパイルされた DLL プロジェクト内に保持され、ホスト MVC アプリケーション (アクセスできない) に組み込まれていることに注意してください。その場合、アプリケーションの残りのコントローラーに影響を与えないことを確認できない限り、デフォルトの実装を変更することはできません。