2015-11-11 53 views
1

在我的MVC项目中,有多个动作,其中请求和响应之间的安全性随着[ValidateAntiForgeryToken]属性的增加而增加。这工作正常。当用户将页面打开几分钟时出现问题(我假设20,(会话状态超时?)),然后向服务器发送请求。这会导致错误,因为回送的令牌不再与服务器上的令牌相匹配。MVC AntiForgeryToken异常 - 全局处理

阅读this问题,可以通过在使用[ValidateAntiForgeryToken]的每个特定操作上添加HandleError属性来解决。

有没有一种方法可以为整个网站设置全局?我讨厌分开设置每个动作。

回答

2

您可以在Application_Start()事件中在global.asax全球注册ActionFilter

protected void Application_Start() 
{ 
    // Register global filter 
    GlobalFilters.Filters.Add(new HandleErrorAttribute()); 

    RegisterGlobalFilters(GlobalFilters.Filters); 
    RegisterRoutes(RouteTable.Routes); 
} 
+0

与此将手动添加到每个控制器有什么不同吗?当然除了不那么全球?我只记得向控制器添加一个属性为每个动作添加它。 – MeanGreen

+1

只是一样,但对于每一个控制器。没有内部障碍。但是如果你想在每个控制器中注册属性,但是你不能用全局过滤器来完成。但我认为情况并非如此,不是吗? – frikinside