2011-05-12 43 views
0

我們有一個基礎控制器,其中所有其他控制器都繼承了自定義RequireHttps屬性。此自定義屬性切換到強制SSL或依賴配置文件中的設置。基礎控制器使用此屬性進行裝飾,並設置爲依賴於配置設置,這對於我們95%的控制器來說是正確的行爲。然而,我們有一對控制器,我們希望設置爲始終需要SSL。如果我將這個屬性應用於這些耦合控制器來強制SSL,那麼RequireHttpsAttribute代碼將運行兩次(可能不是一個大問題,但肯定不是理想的)。MVC3 - 在基類聲明上覆蓋屬性

有沒有什麼辦法讓我重寫基類上的屬性聲明,並在子類上聲明屬性?我懷疑我不能,但很想知道。

感謝所有

回答

0

如何創建將注入到需要進行一些值,表明SSL當前HttpContext的另一個自定義屬性。然後你會用這個屬性修飾需要成爲例外的控制器。然後修改您的自定義RequireHttps屬性喲在HttpContext中查找此值的存在並強制執行SSL。

您只需確保此新篩選器將在自定義RequireHttps屬性之前運行。這可以通過使用Order屬性來完成。