在方法MVC设置访问级别从阿贾克斯称为在方法MVC设置访问级别从阿贾克斯称为(MVC Set acc

2019-05-12 09:50发布

我想保护我的公共方法由用户调用。

因为我从AJAX脚本中调用的动作,我不能使用任何访问修饰符(私有,保护等)。

此外,[HttpPost]不从做一个假的请求停止用户。

任何人都得到一个解决方案吗?

谢谢

Answer 1:

创建一个行为过滤器,即可以通过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);
      }
    }
  }
}

然后,应用此操作方法

[AjaxOnly]
public JsonResult DoSomething()
{
  ....


文章来源: MVC Set accessibility level on a method called from ajax