我有一個網站,我們的客戶登錄以查看他們自己的數據。每個客戶只能看到自己的數據(當然),不同的用戶可以訪問一個客戶的不同頁面。另外 - 編輯必須看到所有數據。Episerver中的角色組合
我想根據角色設置訪問權限,以確定用戶屬於哪個客戶,以及用戶可以訪問哪些頁面。
組:
- Customer1Role
- Customer2Role
- TicketViewerRole
- ChangeRequestRole
用戶:
- Cust1_LowLevelUser。 角色:Customer1Role,TicketViewerRole
- Cust1_HighLevelUser 角色:Customer1Role,TicketViewRole,ChangeRequestRole
- Cust2_LowLevelUser。 角色:Customer2Role,TicketViewerRole
- Cust2_HighLevelUser 角色:Customer2Role,TicketViewRole,ChangeRequestRole
頁面結構
我們已經創建了一個頁面樹,每個客戶都有自己的「根頁面」只能訪問各自的角色。在該節點下方,我們創建了數據特定頁面的實例,這些頁面具有基於用戶角色以及客戶角色的訪問權限。
Customer1 (Customer1Role)
|--TicketsForCust1 (Customer1Role, TicketViewerRole)
|--ChangeRequestsForCust1 (Customer1Role, ChangeRequestRole)
Customer2 (Customer2Role)
|--TicketsForCust2 (Customer2Role, TicketViewerRole)
|--ChangeRequestsForCust2 (Customer2Role, ChangeRequestRole)
亟待解決的問題:
我們如何防止用戶Cust2_HighLevelUser看見ChangeRequestsForCust1
?
EPiServer只會檢查是否有任何角色足以授予訪問權限,並且由於用戶屬於ChangeRequestRole,因此無論客戶的特定角色如何,他們都將被授予訪問權限。是否有可能讓EPiServer檢查客戶角色和頁面角色?
還是我必須從另一個角度看這個?請讓我知道你是否遇到過這個問題並以另一種方式解決問題。
對不起,很長的文章,但希望我明白我的觀點。
謝謝!對於如何以不同方式來組織角色來改進解決方案,您有任何建議嗎? – 2013-04-23 06:27:01
您需要一個「Customer1TicketViewerRole」。如果你不想手動創建它,那麼可能通過添加你自己的RoleProvider。這樣你可以組裝一個名爲「Customer1TicketViewerRole」的「動態」角色併爲其設置頁面權限。 – 2013-04-23 13:39:31
感謝你的努力,約翰。我們現在已經實施了一個解決方案,在父頁面上添加一個動態屬性,該屬性定義您必須在查看其子級時所處的客戶角色。由於維護,我們確實希望遠離客戶特定的角色。 – 2013-04-29 12:16:14