Fab*_*zio 14 model-view-controller asp.net-mvc action-filter asp.net-mvc-3
安全起初.
MVC最佳实践建议将[ValidateAntiForgeryToken]属性添加到每个[HttpPost]操作.
如何在应用程序的一个独特点强制执行此规则?
Fab*_*zio 17
以下类允许使用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;
}
Run Code Online (Sandbox Code Playgroud)
要使用上面的类,请将其添加到文件中的RegisterGlobalFilters方法global.asx:
...
FilterProviders.Providers.Add(new AntiForgeryTokenFilterProvider ());
..
Run Code Online (Sandbox Code Playgroud)
这样做,每个人[HttpPost]都会检查它Html.AntiForgeryToken()是否在视图中.