背景:WPF用戶安全戰略
我創建一個WPF應用程序(.NET 4.5,MVVM光強)
我已經在備份WPF應用程序在用戶數據庫中創建用戶角色在WPF應用程序中有一個分配的角色(即用戶,經理,老闆,管理)
我想:
我的客戶希望能夠根據用戶的角色限制用戶看到的內容以及用戶可以執行的操作。所有用戶都會看到一些視圖,因此根據用戶的角色,應該隱藏或禁用一些視覺元素(網格,按鈕等)。
我有:
我已經創建了一個被注入到每一個視圖模型的IUserService。我創建的角色有一個標記其安全級別的字段(簡單地說是1到5的整數)。我希望能夠根據這個數字來限制視覺元素的可見性。
例如,我的計劃是將元素的可見性綁定到視圖模型(Level1,Level2等)中的布爾屬性(使用boolToVisibility Converter),並且如果用戶級別匹配或者是該屬性將返回true大於財產水平。
我的顧慮:
我擔心的是,這是一個大量的工作在每一個視圖模型,同時還需要每一個視覺元素來實現。另外,我已經有了一些受其他業務邏輯影響的視覺元素。
問題:
什麼是限制用戶的能力基於用戶角色的策略,以「視圖」視覺元素的有效途徑?
我準備開始這項工作,但我很想聽到來自社區的一些其他想法,瞭解如何在WPF應用程序中實現基於用戶角色的安全性。
我的工作與'Prism'並通過[區域導航]實現了類似的行爲(http://stackoverflow.com/questions/18984879/asp-net-like-form-based-authentication-in-wpf-mvvm-prism/18985193#18985193 )。我對每個角色都有幾個視圖,在'ConfirmNavigationRequest'中決定誰可以訪問哪個視圖。也許在MVVM-Light中有類似的界面... –
我會使用轉換器根據當前角色返回所需的可見性狀態,將要管理的控件的可見性綁定到代表當前用戶角色的屬性。您也可以使用轉換器參數傳遞允許的角色。 – Taras
作爲警告,如果您使用Snoop之類的工具,則可以在運行時更改控件的可見性,因此它對確保安全性在較低級別強制執行也很重要。 – gouldos