是否可以将我的操作方法的控制器操作访问限制为仅限 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,但与往常一样,只有开发人员才能理解他们的要求。因此,我建议您考虑是否要以“更柔和”的方式重定向到警告页面来解决此问题。