2

我正在設計ASP.NET Web中的應用程序 - 其中需要Multilevel基於角色的授權和權限(CRUD操作)。針對多級Roledased授權的數據庫設計

它需要授權用戶訪問Web Forms和CRUD Operations On Forms和Tables數據庫。

應用程序的管理員將能夠確定哪些角色有權訪問特定頁面以及授權執行哪項操作。

//More Info : 

我正在使用ASP.NET Web-Form 4.0和Entity Framework 4.1數據庫優先方法。

我熟悉ASP.NET 2.0成員,角色,表單身份驗證。

我將不勝感激任何建議或幫助設計數據庫。

+0

你有什麼這麼遠嗎? – bryanmac

+1

角色列表是否爲靜態?還是動態? 「角色」是賦予特定用戶的標籤,還是可以創建用戶組(以及組)組並將角色關聯到組(然後組中的所有用戶都可以獲得)? –

+0

@bryanmac:我什麼也沒做,我只是想用自定義角色提供者 – Mostafa

回答

2

如果我正確理解這一點,那麼您將擁有一組用戶(可能在SubSets中進行細分:每個子集都是一個組)。

另外:

  1. A用戶總是至少一種第
  2. A組的一部分可以是另一組
  3. 實際的ACL在組級別被設置和用於 各自形成或限定的一部分表。

所以:

Item  Type GroupId  C R U D 
    Form001 F ALL_USERS N Y N N 
    Form001 F Sales  N R U N 
    Form002 F Admin  N Y Y Y 
    All_FORMS T:F Admin  Y Y Y Y 
    Tab-045A D Sales  Y Y Y Y 

它說: Form001是(F)ORM和每個人都可以讀它(但不能修改它的結構)。 來自SALES組的用戶也可以使用表單1進行更新。 管理員(組)可以修改,刪除或使用表格Form002(但不創建它...) 管理員可以創建新的表單。 Tab-045A是一張表,其記錄可以由Sales組中的用戶創建/使用/修改/刪除。

幾個注意事項:

  • 請大家做一個忙,不允許特權,在單個用戶級別,但始終只在集團層面進行設置。新用戶將自動成爲ALL_USERS的一部分,並可能稍後添加到其他羣組(或從中刪除)。
  • 最好不僅有表格和表格,而且還有「表格組」(假設表格可以由最終用戶創建)。如果不是這種情況,那麼在CRUD標誌集中的「C」字段對於表單就沒用了。 (用戶組可以設計哪些形式?或者它們是否是應用程序的一部分,正如我認爲的那樣,對於Tables?)。
  • 一般來說,你必須爲Create/Read/Update/Delete定義適當的語義。對於表,我想這意味着創建一個單一的記錄(不是表格),但對於表單來說,目前有點困惑。
  • 上表只是一個例子,沒有正確的標準化。根據具體情況,您可能必須將其分爲至少兩個表格,可能更多。
  • 爲了確定用戶X是否可以在對象Z上執行操作Y,您基本上必須查找項目/組表中的權限集,並查看用戶X屬於哪個組。
  • 您必須正確管理用戶屬於兩個不同組的情況,並且始終選擇擁有最多權限的用戶或所有權限的聯合。
  • 您必須管理用戶屬於另一個子組的組成部分的組,並且已在上一級組定義了權限。

要管理組和子組,最好查看目標數據庫中存在哪些設施來管理樹結構。通過查看關於此問題的幾個問題,您最好仔細研究這個問題。這是一個給你一個開端,但它不是唯一的一個:

How to store a tree in SQL database

+0

謝謝,我明白你說的話,我沒有接受你的帖子作爲回答,因爲我希望別人也有想法。 – Mostafa

+0

沒關係,如果我在這裏問了一個問題,我會等待一兩天,然後再接受答案。 –