有什么方法可以集中实施每个操作方法必须具有“ ValidateAntiForgeryToken”属性的强制执行?我认为这必须通过扩展“路由”类来完成。

编辑:或者在应用程序启动时做一些反思?

最佳答案

是。您可以通过创建自己的继承Mvc控制器并重载OnAuthorization()的BaseController来实现。您想要在执行之前确保它是一个POST事件:

public abstract class MyBaseController : Controller
{
  protected override void OnAuthorization(AuthorizationContext filterContext)
  {
    //enforce anti-forgery stuff for HttpVerbs.Post
    if (String.Compare(filterContext.HttpContext.Request.HttpMethod,
          System.Net.WebRequestMethods.Http.Post, true) == 0)
    {
      var forgery = new ValidateAntiForgeryTokenAttribute();
      forgery.OnAuthorization(filterContext);
    }
    base.OnAuthorization(filterContext);
  }
}


一旦有了它,请确保所有控制器都继承自该MyBaseController(或任何您称呼的控制器)。或者,如果您喜欢使用相同的代码,则可以在每个Controller上执行此操作。

关于asp.net-mvc - 确保每个 Controller 方法都具有ValidateAntiForgeryToken属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1937962/

10-13 05:53