有什么方法可以集中实施每个操作方法必须具有“ 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/