我们使用带有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