2008-09-16 64 views
2

有沒有人知道有關建立heirarchical用戶帳戶系統的一些好資源?我目前正在設置一個,並且正在努力處理一些更復雜的邏輯(尤其是確定權限)。我希望我能找到一些資源來幫助我。分層組權限理論/資源?

一些背景知識: 我正在構建允許嵌套組層次結構的Web CMS的用戶帳戶系統。每個組可以被允許/拒絕訪問讀取,寫入,添加和刪除(顯式地爲該組,或者由其父母之一隱式地)。如果這些並不複雜,系統還允許用戶成爲多個組的成員。 - 這是我卡住的地方。我已經設置了一切,但我正在努力確定給定用戶的權限的實際邏輯。

回答

1

我正是這樣做之前和其非同小可的實現。你會想看看SecurityPermission類。

[http://msdn.microsoft.com/en-us/library/system.security.permissions.securitypermission.aspx][1]

我以前通過存儲在CLR利用XML(這我不知道我會再做一次)並存儲XML作爲權限列表SQL服務器的內部XML列中的做到了這一點PROC。 XML將有一個稱爲「權限」的元素,然後權限實際上是代碼中的ENUM。每個權限都是SecurityPermission類的一個新實現(上面鏈接)用戶被綁定到在SQL Server中定義的組,然後當用戶被添加/刪除到組中時,XML文檔將被更新以反映他們分開的組的。

只要用戶登錄,用戶憑證就會被加載到應用程序商店(會話)中,然後將被相應訪問。當需要進行授權時,應用程序商店中的XMl將通過「FromXML」方法下載到SecurityPermission中。在這一點上我會用下面的方法來確定用戶是否有權限:

  • 需求
  • 相交
  • 聯盟
  • IsUnrestricted
  • IsSubSetOf

等等,等等等等

在執行需求後,我可以根據我在SecurityPermissions中如何實現我的安全例程來確定調用者是否有權訪問。

再一次,這是遺漏了一個細節的噸,但這應該讓你沿着正確的道路。

看看這個名字空間,以及:[2]:http://msdn.microsoft.com/en-us/library/system.security.permissions.aspx「System.Security.Permissions」

+0

嗨@Donn這看起來非常有趣,聽起來像一個偉大的博客文章。我注意到你在幾年前發佈了這篇文章,從你的經驗來看,你現在有什麼不同的方法嗎? – 2012-03-29 10:47:18

2

表示給定組作爲一個位掩碼設置的權限。將位掩碼組合在一起會爲您提供最終的權限集。

更新@Alex:

我3年前寫的這個答案,但我相信我是暗指以下...

從問題

嵌套組層次。每個組可被允許/拒絕訪問 讀取,寫入,添加和刪除(顯式爲該組,或由其父母之一隱式地)。就好像這並不複雜 足夠,該系統還允許用戶成爲多個 組的成員。 - 這是我卡住的地方。我已經設置了一切,但 我正在努力確定給定用戶的 的權限的實際邏輯。

分配一個位掩碼匹配系統中的總權限集的基團(或角色)的:

例如00(使用兩位保持它在這裏簡單!)

第一位賦予Permission A和第二個Permission B

現在說A組賦予以下權限集:01

...並且說B組賦予以下權限集:10

要獲取用戶設定的最終許可,不得以組的任意一組,你可以執行的權限設置位掩碼中的邏輯OR

Permission set for Group A 01 
Permission set for Group B 10 OR 
          ---- 
Resultant permission set  11 (i.e. both permission A and B are conferred) 

我不知道提問的系統的細節,但是這裏概述的系統可以被增強以使用不同的邏輯運算符來實現不同的羣組組合行爲。

+1

Hi @Ben,這看起來很有趣,你可以用一個小例子來詳細說明嗎?或者也許是一個有用資源的鏈接? – 2012-03-29 10:58:53