アクションメソッドのコントローラーアクションアクセスをAJAXのみのリクエストに制限することは可能ですか?
つまり、Ajax以外のアクション要求は、404にリダイレクトされるか、エラーがスローされます。自分のページでJSからリクエストがあった場合にのみ、アクションは正しい結果を返します。
グーグルしようとしましたが、答えが見つかりませんでした。その目的のためにカスタムフィルターを実装できることを学びましたが、MVCにすでに存在しているのでしょうか?
ありがとうございました。
アクションメソッドのコントローラーアクションアクセスをAJAXのみのリクエストに制限することは可能ですか?
つまり、Ajax以外のアクション要求は、404にリダイレクトされるか、エラーがスローされます。自分のページでJSからリクエストがあった場合にのみ、アクションは正しい結果を返します。
グーグルしようとしましたが、答えが見つかりませんでした。その目的のためにカスタムフィルターを実装できることを学びましたが、MVCにすでに存在しているのでしょうか?
ありがとうございました。
非 Ajax 呼び出しをブロックするカスタム アクション メソッド セレクターを作成する
public class AjaxOnlyAttribute : ActionMethodSelectorAttribute
{
public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
{
return controllerContext.HttpContext.Request.IsAjaxRequest();
}
}
あなたの属性は古典的な方法で適用されます
[AjaxOnly]
public ActionResult Index()
{
または、コントローラーに適用できます
[AjaxOnly]
public class HomeController : Controller
{
ユーザーに 404 を送信することをお勧めするかどうかはわかりませんが、いつものように、開発者だけがユーザーの要件を理解しています。したがって、警告ページにリダイレクトするという「よりソフトな」方法でこれにアプローチするかどうかを検討することをお勧めします。