2008-12-19 51 views
8

我正在研究在我的ASP.NET應用程序中構建身份驗證,並符合以下要求。ASP.NET:權限/身份驗證體系結構

  • 用戶具有正好一個角色(即管理,銷售經理,銷售,....)
  • 角色具有一組權限以訪問CRUD現有對象的子集。即 「銷售具有對象類型」產品「但不刪除的CREAD,READ,WRITE權限」
  • 不知何故,我喜歡將權限置於具有繼承的層次結構中,以便我爲ie Admin無需指定所有可用對象。
  • 系統必須迅速能夠回答這個問題:「是否用戶X具有相應的權限y以反對Z」
  • 所有的數據庫管理(MSSQL),在C#中實現/ ASP.NET

我想獲得關於這些要求的反饋?任何想法如何實現這個使用ASP.NET框架(儘可能)? (但是,我也很想知道如何在沒有成員資格的情況下實現這一點)

回答

6

我想你需要做的是在業務對象或控制器中實現一組權限查詢方法。示例:CanRele(),CanEdit(),CanDelete()

頁面呈現時,需要查詢業務對象並確定用戶的授權功能並根據此信息啓用或禁用功能。業務對象又可以使用角色或附加數據庫查詢來確定活動用戶的權限。

我想不出一種集中定義這些權限的方法。他們需要分配到功能的實施。但是,如果您想改進設計,則可以使用依賴注入將授權者插入到業務對象中,從而保持實現的獨立性。

有些代碼在Rocky Lhotka的書中使用了這個模型。新版本尚未在Google中。

1

自ASP.NET 2.0開始提供的成員資格API應該很好地滿足您的要求。我擔心的唯一不直接支持的是等級角色。但是,您可以輕鬆地使用普通的基於角色的安全性與另一個手動編寫的分層角色表來實現所需的內容

2

我認爲我認爲滿足您的要求的最佳實施方案之一是here。唯一的問題是,這個鉤入NHibernate,但你可以使用它作爲模板來創建你自己的權限實現,並簡單地鉤入你自己的事件模型,而不是NHibernates攔截器。

我正在自己的系統上工作,一旦我對此感到滿意,我會寫博客。

0

我將建立用戶/角色關係,使用戶可以有更多比1層的作用。我發現1-1的關係,我感到緊張,因爲我知道即使我們現在看不到這種需求,某個人總有一天會想要某個人既是銷售用戶又是客戶服務用戶。

在我們的客戶系統中,我們使用角色對像「delinquentCustomer」這樣的東西進行分層。這樣,原始許可仍然有效 - 只要他們支付賬單。值得考慮這種方法。