2011-07-21 303 views
4

我讀了幾篇文章,提到您應該讓所有控制器都從具有[Authorize]屬性的父類派生,以便不會在您的站點中留下安全漏洞。 (例如:article安全ASP.NET MVC 3網站

但是,所有控制器都已從父控制器派生,該控制器沒有[授權]屬性。如果不必爲每個控制器添加屬性,強制執行此建議的最佳方式是什麼?

+2

我認爲這是你已經找到了一個相當不錯的文章。如果你仔細閱讀它,它也解釋了MVC3更容易,因爲你可以使用全局過濾器而不是基類。甚至有一個代碼示例如何全局應用授權屬性。然後,它甚至解釋了一個很好的解決方案,當你不想應用授權屬性(例如登錄/註冊頁面)時。 –

+0

我會再讀一遍。我似乎忽略了一些重要的細節。 – Phil

+1

@菲爾,這是一篇很棒的文章,我已經將它實現到了我的項目中。我的問題是你有多少個控制器?看起來很容易將它添加到您的控制器級別,然後根據需要在方法級別實現更好的糧食安全性。只是我的兩分錢。 –

回答

2

的MVC3(也可能是2我不記得了),你可以使用全局鉤子一樣:

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    filters.Add(new HandleErrorAttribute()); 
} 

protected void Application_Start() 
{ 
    RegisterGlobalFilters(GlobalFilters.Filters); 
} 
+0

什麼是'全球hoo'? – spender

+0

可能意味着鉤子。編輯。 –

+0

全局過濾器在OP所鏈接的文章中被提及,儘管這個問題的語氣暗示它們可能被OP忽略了。 – LukeH