2012-02-17 70 views
1

這是在Web應用程序意識中很平常的事。我已經做了很多次。如何設計用戶,角色和權限模式?

但我困在我目前爲此設計架構的項目中。

事情是我的應用程序將有三種類型的用戶在開始例如SuperAdmin,Admin和普通用戶。

我打算將這些用戶類型作爲角色,如ROLE_SUPERADMIN,ROLE_ADMIN和ROLE_USER。

該系統可以有很多的角色。實際上,SuperAdmin和Admins創建角色並將這些角色分配給用戶。

的問題是,

超級管理員將不得不在未經許可的P1,P2和P3。超級管理員可以創建其他超級管理員。 超級管理員可以創建管理員。 超級管理員將無法在系統中添加用戶。

管理員可以擁有權限p5,p6和p7。 管理員無法創建其他管理員。 管理員可以創建其他用戶。 管理員還可以創建類似的報告說觀衆的角色。

具有權限p1,p2和p3的超級管理員應該能夠創建具有權限p5,p6和p7的管理員。我沒有得到。

從邏輯上講,超級自己沒有權限p5,p6和p7時,他們如何才能創建具有這些權限的管理員?

請幫我出這個正確的設計。

下面是設計我到目前爲止。

用戶
用戶名角色ID

作用
角色ID ROLENAME

准許
PermissionID PermissionName

ROLE_PERMISSION 角色ID PermissionID

感謝。

+0

No comme nts尚未。我認爲這在Web應用程序開發中是非常普遍的事情。過去肯定有人遇到過這種情況。請幫忙。 – ashishjmeshram 2012-02-17 04:44:30

+0

這實在令人失望。這些日子你問的大部分問題都沒有答案。即使給予獎勵。 :( – ashishjmeshram 2012-02-17 05:00:55

+0

你好?有人請回復 – ashishjmeshram 2012-02-17 05:52:54

回答

2

這是一個加載的問題,設置成員,角色等是不小的壯舉。我建議你看看已經寫好的圖書館,看它們是否適合你的需求。你應該開始使用谷歌搜索,簡稱爲「訪問控制列表」(acl)。

2

一旦設計出這樣的數據庫,

我安裝了一些論壇,門戶和CMS腳本,分析了他們如何處理這種情況,然後提取了DB模式並將它們用作參考。

可能這可以幫助

2

你應該看看的授權框架,如XACML標準 - XACML允許您定義基於幾個屬性的授權,這樣你就不會在角色爆炸告終。因此,而不是創建一個角色manager_in_tx_with_gold_status,您可以創建規則,例如:

與角色=經理,位置= TX可以做動作=視圖上資源的用戶....

有幾種供應商解決方案和開源解決方案。退房的維基百科頁面和標準的主頁以獲得更多信息:

我有一個YouTube頻道太多,大約XACML會談: