2010-09-17 75 views
3

我正在研究內部Web應用程序(只有員工可以登錄),並需要一些幫助來找出處理個人用戶對系統的權限的好方法。需要幫助來保護ASP.NET Web應用程序

系統本身在C#/ ASP.NET(4.0/Webforms/Forms Authentication)/ SQL Server 2008中,並且有幾個不同的區域,這些區域會有不同的權限集合。您可以將其視爲基本的粗劣場景(創建,查看,更新,刪除),儘管這些將適用於系統的不同方面。我想提及這不是一種CMS系統,所以我不能選擇一個像DotNetNuke或任何其他開源項目,這是從頭開發的,我可以使用開源庫)

對於複雜系統設計User Permission系統,可能有5-6個不同的部分,每個部分都包含10-15個不同的視圖/更新/刪除,這會是一個好方法嗎?

的這裏的目標是使它:

  1. 理解的用戶(管理員)使用/套起。
  2. 易於維護代碼明智。
  3. 容易適應需要新的權限(不同類型或不同點)。

有浮現在腦海兩種方法:

方法1:

嘗試使用內置的ASP.NET角色系統來定義不同的權限,並從那裏管理。我可以構建自定義頁面來處理不同的區域併爲用戶分配權限集。我相信這也允許我在默認情況下使用當前會話對象來爲用戶包含系統中的所有權限。 (HttpContext.User.IsInRole()等...)。

現在,雖然我認爲這種方法可行,但我不確定這將很容易維護或適應未來的需求。看起來,這將是更快的方式,讓它起飛並運行,但不是最好的長期。

方法2:

推出自己的。在這個場景中,我將設置數據庫表來存儲應用程序每個部分的真/假風格權限。然後,我會檢索該信息並將其放入會話中,並隨時根據需要檢查是否有人有權執行某些操作。然後,我會建立自定義頁面來管理列表等。

看來這種方法可能是更可維護的長期解決方案。它給了我更多的權力,以及如何處理。但是,我基本上仍然在做着角色系統在方法1中爲我提供的工作。然而,我仍然贊同這種方法。


最後,我不確定兩種方法是否是處理這種情況的最佳方法。任何人都可以幫助解釋爲什麼上述任何一個是好的/壞的?或者甚至建議一種不同的替代方案,以「一般」的方式來處理它。這是我在這方面的第一個主要工作,所以我沒有很多經驗來嘗試通過權限「保護」這樣的應用程序。任何和所有的幫助表示讚賞!

回答

2

使用內置的方法,除非你有一個特定的架構不需要。如果你不使用內置的,你可以選擇推出你自己的提供者實現,但你應該遵循與系統內部構建相同的模板,因爲它涵蓋了許多你應該考慮的安全性問題。

甚至有內置的配置頁面,用於快速和骯髒的用戶維護。

+0

感謝您的信息,角色和權限!我知道使用內置系統會降低複雜性。我只是主要關心不可避免的數百個不同的維護權限。我當然確實看到讓系統處理ms執行的好處。謝謝! – Delebrin 2010-09-17 15:47:10