如何全局设置 ValidateAntiForgeryToken

Posted

技术标签:

【中文标题】如何全局设置 ValidateAntiForgeryToken【英文标题】:How can I set the ValidateAntiForgeryToken globally 【发布时间】:2011-07-09 23:01:07 【问题描述】:

首先是安全性。

MVC 最佳实践建议将[ValidateAntiForgeryToken] 属性添加到每个[HttpPost] 操作。

如何在应用程序的一个独特点强制执行此规则?

【问题讨论】:

【参考方案1】:

以下类允许使用 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 方法中:

...    
FilterProviders.Providers.Add(new AntiForgeryTokenFilterProvider ());
..

这样做,每个[HttpPost] 将检查html.AntiForgeryToken() 是否在视图中。

【讨论】:

您的过滤器提供程序是否继承自任何基类? 该代码将为应用程序的每个请求创建一个列表。可以通过使用yield来改进:yield return new Filter(new ValidateAntiForgeryTokenAttribute(), FilterScope.Global, null); 为了清楚起见,链接到全班:code.google.com/p/vnecoo/source/browse/trunk/Code/Oas2011/OAS/…

以上是关于如何全局设置 ValidateAntiForgeryToken的主要内容,如果未能解决你的问题,请参考以下文章

在Postman中如何设置全局变量?

QT如何设置可变的全局变量

如何取消设置全局变量。

MVC Core 如何强制/设置所有操作的全局授权?

如何在android中全局设置值[重复]

如何全局设置 ValidateAntiForgeryToken