我們使用帶有PRISM的MVVM開發了使用Silverlight 4的Intranet應用程序。到目前爲止,我們只有一個基本的安全方案,歸結爲基於活動目錄組成員身份的「訪問被授予」或「拒絕訪問」。現在我們必須對此進行擴展。Silverlight 4 MVVM:使用裝飾模式的交叉切割安全
我們定義了更多粒度角色&在應用程序啓動時加載的權限以及單個ISecurityContext實例公開的權限。此安全上下文知道授予當前登錄用戶的角色&權限。現在我想以優雅的方式將這個上下文插入到我的視圖模型中。的想什麼,我做一個簡單的例子是這樣的:
public class NavigationBarViewModel
{
//...
[Secured(RequiredPermission="EditLocation")]
public void NavigateToEditLocations(IRegionManager rManager)
{
var editLocView = new Uri("EditLocationsView", UriKind.Relative);
rManager.RequestNavigate("WorkspaceRegion", editLocView);
}
//...
}
現在當然有擔保屬性應該以某種方式知道我們的安全上下文。我不確定從哪裏開始,或者如果這真的是裝飾者模式的應用程序。 Mabye有人可以將我指向正確的方向。
我要補充一點,你通常與這些攔截器的屬性不會裝修視圖模型的方法,因爲的ViewModels不應該由一個DI容器來解決,服務應該是。 – hoetz 2011-05-21 11:21:17