2

アクションメソッドのコントローラーアクションアクセスをAJAXのみのリクエストに制限することは可能ですか?

つまり、Ajax以外のアクション要求は、404にリダイレクトされるか、エラーがスローされます。自分のページでJSからリクエストがあった場合にのみ、アクションは正しい結果を返します。

グーグルしようとしましたが、答えが見つかりませんでした。その目的のためにカスタムフィルターを実装できることを学びましたが、MVCにすでに存在しているのでしょうか?

ありがとうございました。

4

1 に答える 1

6

非 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 を送信することをお勧めするかどうかはわかりませんが、いつものように、開発者だけがユーザーの要件を理解しています。したがって、警告ページにリダイレクトするという「よりソフトな」方法でこれにアプローチするかどうかを検討することをお勧めします。

于 2013-03-06T20:34:03.673 に答える