【发布时间】:2011-04-05 19:27:05
【问题描述】:
我是一位经验丰富的开发人员,但对 Silverlight、Prism、MVVM 和所有相关的东西都是新手,我需要一种灵活的方法来解决我正在开发的新应用程序的安全性。 我通过我为 WinForms 构建的自定义安全框架(实际上是 Visual WebGui)实现了这个安全模型,但我需要获得一些关于如何为 Silverlight 实现它的指南,或者是否已经构建了一些我可以使用的东西。
所有模块都实现了两个接口,ISecurableModule 和 ISecuredModule。 ISecurableModule 用于向安全存储库注册模块。 ISecuredModule 用于加强安全性。
在我的 Winforms 应用程序中,在启动时(实际上是在新安装后,首次启动时),会启动一个模块,该模块通过反射检查所有程序集,寻找实现 ISecurableModule 接口的模块。此界面报告模块是否在添加模式、编辑模式、查看模式或都没有启动(例如,报告模块或数据获取/过滤器只能在查看模式下打开,因为其中不能更改任何数据,但是数据条目只能在“添加”、“添加/编辑”或“视图”中打开) 所有这些数据都保存到安全存储库中。
要定义安全权限,我可以创建安全类别 - 例如,库存操作员、库存主管、薪资操作员、薪资主管等。对于每个类别,我分配从安全存储库中选择的具有适当权限的模块(例如,对于库存操作员,我分配具有添加和查看权限的模块接收库存操作或转移库存操作,对于库存主管,我为所有库存模块分配了完全权限)
然后我创建库存操作员角色,并为他分配库存操作员安全类别。我可以为每个角色分配多个安全类别(因为我可以创建具有更高粒度的安全类别 - 例如,用于管理自己的帐户或管理用户组的安全类别 - 这将被授予主管等)
然后在运行时我有工作场所的概念(如 Prism 中的 shell),我可以动态加载模块(真正动态,我使用 ServiceLocator 模式根据它实现的接口定位组件,然后每个都有一个控制器模块类 - 实现相同接口的模块 - 它可以使用枚举字段来识别在需要处理的数据时实际加载哪个模块)。工作区控制器使用安全提供程序检查要加载的模块的访问权限与当前用户的访问权限。
在我的 SL4 应用程序中,我想使用 MVVM 模式,因此我想让我的视图无代码,并通过 ViewModel、ICommands 和数据绑定来驱动整个功能。所以我需要一些关于如何完成我在 SL4 应用程序中描述的功能的建议。我对 Prism 并没有特别的依赖,所以我会考虑是否有另一个 SL4 框架可以帮助我实现这个目标。
【问题讨论】:
标签: security silverlight-4.0 mvvm