2011-02-05 109 views
4

我有一個silverlight應用程序(MVVM)的視圖將被應用程序內的多個角色使用,視圖中某些ui控件的可訪問性取決於用戶角色。這應該如何在視圖模型中進行管理?是否有任何我應該考慮的對象模式?MVVM和基於角色的安全

任何想法/指導將不勝感激。

回答

3

想到的第一個想法是在您的ViewModel中具有與當前用戶是否有能力執行某些操作相對應的屬性。例如:

public bool CanChangeDisplayName { 
    get { 
     bool result = SomeMechanismToDetermineUsersAbilityToPerformAction(); 
     return result; 
    } 
} 

然後,你可以在適當的控制IsEnabled(或IsReadOnlyVisibility)屬性綁定在您查看此屬性。喜歡:

我希望這有助於!

0

角色特定的視圖部分可能在某種容器(網格,堆棧面板,tabitem等)中,如果是這種情況,那麼我會認爲你的解決方案將關注你爲可見性設置的綁定屬性。

您將創建一個應用程序範圍的靜態資源,以便爲當前用戶調用IsInRole。在你的綁定中,你必須引用一個轉換器(從布爾到可見性),在那裏你可以傳遞你正在測試的角色名稱。

+0

我將與有關更改能見度位不同意。在某些情況下可能是適當的,但不是一般的規則。例如,如果用戶擁有隻讀訪問權限,您可能不希望隱藏包含發票訂單項的網格 - 用戶根本無法看到它們! – Pwninstein 2011-02-05 12:52:11