2010-07-28 105 views
0

關於如何實現支持父角色和子角色的自定義角色提供者,有沒有很好的指導?如何實現支持子角色的自定義角色提供程序?

我有一個要求,按照通常的角色提供程序功能具有高級角色權限。但是,我還有要求將權限進一步分解爲子角色。我玩弄了爲子權限設置更多角色實例的想法,但我更願意擁有允許子角色的本地解決方案。

例如:

[IT]

[IT]> [管理員]

[外聯網]

[外聯網]> [管理員]

在這種情況下,「管理員」角色實際上是兩個不同的角色,一個是IT部門,另一個是Extranet方案。理想情況下,2個「管理員」角色之間沒有關聯,因爲他們是獨特的子角色。

[編輯]:關注伊戈爾的評論我覺得我應該澄清。 aspnetdb已經託管多個應用程序,因此使用應用程序名稱不可能分離子角色,因爲它已經被用來按應用程序分離角色。

+0

事後看來,我認爲.Net角色提供者本質上建立在一維角色概念之上,其申請名稱允許在某種程度上進行劃分。我現在正在爲角色提供程序類實現自定義Linq擴展庫,該類將支持查找自定義的子角色表。 – 2010-07-28 13:08:12

回答

3

1)使用權限聚合,爲什麼你必須使用繼承?只需將用戶分配給IT和管理員角色,他們的權限將被連接起來。

2)使用Application Name分開管理員(1)和管理員(2)。如果我瞭解你,它將是2個不同的應用程序(否則重命名一個管理員到其他名稱)

運氣。

+0

好點,我應該在我的問題上更清楚。我有多個應用程序已經共享相同的aspnetdb並使用不同的應用程序名稱。在這種情況下,不能使用應用程序名來分隔「管理員」角色。 – 2010-07-28 10:24:38

0

(或許應該asp.net標籤這個)

我不知道任何母語(MS),支持角色的解決方案中的作用的解決方案。如果您不需要在角色中提供角色,並且可以一直創建「IT」,「IT_Admin」,「Extranet」和「Extranet_Admin」等角色。

1

不知道您是否仍在尋找可行的解決方案,但最近我開發了一個具有類似要求的應用程序。我使用角色提供者來分配基本角色。就你而言,IT或Extranet。然後爲每個用戶分配一個狀態(它是admin和extranet admin)。通過在登錄時加入會話來存儲他們的狀態,並使用if語句來訪問subrole頁面和視圖。

+0

謝謝你回到我身邊。不久前我已經問過這個問題了。我們想出的解決方案是創建一個角色提供者,它繼承了標準的SQL角色提供者。然後,我們添加了新的自定義表格來表示子角色並添加了包含此功能的方法。 – 2011-07-08 08:05:09

相關問題