2010-01-22 55 views
0

我想創建一個基於模塊級安全的應用程序。這個想法是,我們將有一個用戶登錄,抓住角色,抓住那些角色有權訪問的頁面,然後在這些頁面中抓取他們有權訪問的模塊,然後獲取他們有權訪問的模塊中的功能(列表,創建,編輯,刪除)。這種方式在管理員屏幕上有人可以允許或拒絕將模塊和模塊功能分組。基於模塊的安全

有沒有人看到過這樣的示例項目,或者對如何實現這個有任何線索?我真的很想在n層架構上嘗試。

回答

1

使用基本會員系統創建您的網站。將您的頁面分組到文件夾中,並在每個文件夾中都有Web.Config文件來控制訪問。這大部分都是開箱即用的功能。您必須編寫的唯一自定義代碼是在創建管理員表單時。

至於細晶粒訪問,如果他們不能訪問的頁面,他們無法訪問自己的方法......

http://msdn.microsoft.com/en-us/library/yh26yfzy.aspx

UPDATE:

如果用戶。 IsInRole( 「管理員」)...

http://www.4guysfromrolla.com/articles/082703-1.2.aspx

在th在代碼隱藏中,您可以通過編程方式檢查角色並相應地顯示/啓用面板/模塊:-)

+0

感謝您的信息。我非常瞭解這一點,但我想知道是否有可能有2個角色可以訪問頁面的應用程序,但是在該頁面中,將根據角色加載不同的模塊,以及基於滾動的模塊中的不同功能。那有意義嗎?一頁將有不同的模塊和模塊功能基於用戶卷... – 2010-01-23 03:04:38

+0

@Jesse:是的,看到更新。您可以編程方式檢查角色並根據用戶是否在該角色加載模塊。你可能會發現一個更優雅的方式來做同樣的事情取決於你的對象設計:-) – IrishChieftain 2010-01-24 19:35:10

+1

感謝您的答案和更新(道歉的延遲):) – 2016-03-28 17:55:29

0

我會使用基類來完成您描述的效果。在您的基類中,您可以添加所需的所有可用方法,但在基類中提供了一種授權方法,允許方法根據它們允許擁​​有的角色來標識自己。所有這些都可以使用web.config配置,如果你計劃的話。很多時候,基於「文件夾」的SQL成員資格方法不夠健壯。我想作爲一個例子,你可以建立你自己的(或在System.Security命名空間中找到一個)安全枚舉來定義訪問級別,然後將訪問級別從AD中(或任何地方)的組映射到枚舉。然後這些方法可以使用安全枚舉對用戶對象進行確定,以確定用戶的訪問是否允許該功能。