是否可以将我的操作方法的控制器操作访问权限限制为仅限AJAX的请求?
我的意思是非Ajax请求操作它将被重定向到404或抛出错误。如果JS在我自己的页面上发出请求,则Action仅返回正确的结果。
我试图谷歌,但没有找到答案。我了解到我可以为此目的实现自定义过滤器,但是它可能已经存在于MVC中了吗?
谢谢。
答案 0 :(得分: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,但与往常一样,开发人员只能了解他们的要求。因此,我建议您考虑是否希望以“更柔和”的方式处理此问题,以重定向到警告页面。