本文介绍了如何全局设置 ValidateAntiForgeryToken的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
首先是安全.
MVC 最佳实践建议将 [ValidateAntiForgeryToken]
属性添加到每个 [HttpPost]
操作.
MVC best practices reccomend to add the [ValidateAntiForgeryToken]
attribute to each [HttpPost]
action.
如何在应用程序的一个独特点强制执行此规则?
How can I enforce this rule in one unique point of the application?
推荐答案
以下类允许使用 FilterProvider 来做到这一点
The follwing class allow to do this with a 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;
}
要使用上述类,请将其添加到 global.asx
文件中的 RegisterGlobalFilters
方法:
To use the above class add this to the RegisterGlobalFilters
method in global.asx
file:
...
FilterProviders.Providers.Add(new AntiForgeryTokenFilterProvider ());
..
这样做,每个[HttpPost]
将检查 Html.AntiForgeryToken()
是否在视图中.
Doing this, each [HttpPost]
will check if the Html.AntiForgeryToken()
is in the view.
这篇关于如何全局设置 ValidateAntiForgeryToken的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!