2015-11-11 52 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