首先是安全。
MVC最佳做法建议在每个[ValidateAntiForgeryToken]
操作中添加[HttpPost]
属性。
如何在应用程序的一个独特点强制执行此规则?
答案 0 :(得分:16)
以下类允许使用FilterProvider
执行此操作public IEnumerable<Filter> GetFilters(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
{
List<Filter> result = new List<Filter>();
string incomingVerb = controllerContext.HttpContext.Request.HttpMethod;
if (String.Equals(incomingVerb, "POST", StringComparison.OrdinalIgnoreCase))
{
result.Add(new Filter(new ValidateAntiForgeryTokenAttribute(), FilterScope.Global, null));
}
return result;
}
要使用上述类,请将其添加到RegisterGlobalFilters
文件中的global.asx
方法:
...
FilterProviders.Providers.Add(new AntiForgeryTokenFilterProvider ());
..
执行此操作时,每个[HttpPost]
都会检查Html.AntiForgeryToken()
是否在视图中。