2010-09-19 95 views
0

我的應用程序中的「管理」區域包含一堆控制器,並且在所有這些控制器上放置[Authorize]屬性有點重複。有沒有辦法告訴框架,某個區域的所有控制器應該具有某些屬性?ASP.NET MVC 2中的區域屬性?

編輯:在這種情況下,繼承不是一個解決方案。首先,控制器已經從自定義類繼承,其次,它應該是裝飾類,而不是繼承它們。

回答

1

MVC 3有一項名爲Global Action Filters的新功能,它對於您正在做的事情來說是完美的。由於您可能尚未使用MVC 3,因此您也可以通過遵循this example在較早版本的MVC中實施Global Action Filter。只需自定義解決方案以過濾檢查您是否位於當前正在執行的請求的「管理」區域,然後應用您的「授權」屬性。

這將允許你做到這一點,而不必按照你的要求應用公共基類。

+0

好東西,謝謝! – ciscoheat 2010-09-20 08:52:28

1

您可以創建一個基本控制器,該區域中的所有控制器都從[Authorize]屬性派生並裝飾它。

+0

不幸的是,繼承鏈已經很忙。 :) – ciscoheat 2010-09-19 09:48:08

+0

哦,所以你有一個繼承鏈。那麼簡單地去基地控制器和裝飾:-) – 2010-09-19 09:50:28

+0

我的基地控制器是在公共和私人領域之間共享的... – ciscoheat 2010-09-19 09:51:35

0

有四個選項,

  1. 創建一個單獨的基本控制器,使管理員sectionsu從它繼承
  2. 添加授權屬性的控制器類,而不是每個方法/ Actrion
  3. 上裝飾各單獨
  4. 寫你自己的邏輯進行授權,並添加到您當前的基本控制器