MVC在从ajax调用的方法上设置可访问性级别

Ref*_*eft 1 asp.net-mvc access-modifiers

我想保护我的公共方法不被用户调用.

因为我从ajax脚本调用动作,所以我不能使用任何访问修饰符(私有,受保护等).

此外,[HttpPost]不会阻止用户执行虚假请求.

有人有解决方案吗?

谢谢

小智 6

创建一个动作过滤器,允许仅通过AJAX调用操作方法

namespace MyFilters
{
  [AttributeUsage(AttributeTargets.Method)]
  public class AjaxOnlyAttribute : ActionFilterAttribute
  {
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
      if (!filterContext.HttpContext.Request.IsAjaxRequest())
      {
        filterContext.HttpContext.Response.StatusCode = 404;
        filterContext.Result = new HttpNotFoundResult();
      }
      else
      {
        base.OnActionExecuting(filterContext);
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后将其应用于action方法

[AjaxOnly]
public JsonResult DoSomething()
{
  ....
Run Code Online (Sandbox Code Playgroud)