6

由於它本身並不支持,因此在每個區域基礎上實施全局過濾器的推薦方法是什麼?MVC中的區域全局過濾器3

+0

將過濾器放在該區域的每個控制器上? :)但嚴重的是,你的意思是'ActionFilters'? – 2011-04-18 08:32:58

+0

我這樣做,但從MVC 3開始'ActionFilters'是更廣泛的'IFilter'的具體實現。 – 2011-04-18 08:47:57

回答

2

您可以使用自定義IFilterProvider

+0

應該這樣做!好的想法 – 2011-04-18 08:48:28

9

它本身不支持的原因是因爲我們想阻止開發人員這樣做。區域不與控制器相關聯;他們聯繫與路線。我們希望阻止開發人員嘗試將授權或其他安全敏感的過濾器應用到區域,因爲它們可以被繞過。

請參閱How can we set authorization for a whole area in ASP.NET MVC?瞭解更多信息。

+1

有關MVC 4更新,請參閱http://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-and-the- new-allowanonymous-attribute.aspx – RickAndMSFT 2012-03-23 23:43:05

+3

_「區域與控制器無關」_ - 有趣的是,我可以在每個區域看到控制器文件夾。控制器**總是**與某個區域相關聯:「根」區域或自定義區域。所以我不同意。一個常見的例子是創建一個「管理員」區域 - 猜測你想要在全球範圍內應用哪個過濾器。 – Quango 2013-01-24 14:26:35

+1

@Quango你的假設是不正確的。另請參閱我的答案http://stackoverflow.com/questions/2319157/how-can-we-set-authorization-for-a-whole-area-in-asp-net-mvc/2320419#2320419,它表明控制器不屬於區域。 – Levi 2013-01-24 20:50:37