我是一个经验丰富的开发人员,但对Silverlight、Prism、MVVM和所有相关的东西都是新手,我需要在我正在开发的新应用程序中采用灵活的安全性方法。我已经通过我为WinForms (实际上是Visual WebGui)构建的自定义安全框架实现了这个安全模型,但是我需要获得一些关于如何为Silverlight实现这个安全模型的指导方针,或者如果已经构建了一些我可以使用的东西。
所有模块都实现了两个接口,ISecurableModule和ISecuredModule.。ISecurableModule用于向安全存储库注册模块。ISecuredModule用于加强安全性。
在我的Winforms应用程序中,在启动时(实际上是在新安装之后,在第一次启动时),将启动一个模块,通过反射检查所有程序集,寻找实现ISecurableModule接口的模块。如果一个模块ce在添加模式、编辑模式、视图模式或没有启动时(例如,报告模块或数据获取/筛选器只能在视图模式下打开),则此接口报告所有这些数据都可以保存到安全存储库中,因为其中不能更改数据,但只能在Add、Add / Edit或View中打开数据条目。
为了定义担保权,我可以创建安全类别--例如,库存操作员、库存主管、工资单操作员、工资单管理员等。对于每个类别,我都分配从安全存储库中选择的模块,并具有适当的权限(例如,对于库存操作员,我分配模块接收库存操作或转移库存操作( Add和View权限),对于库存主管,我分配所有具有完全权限的库存模块)
然后我创建了库存操作符角色,并给他分配了库存操作员安全类别。我可以为每个角色分配几个安全类别(因为我可以创建粒度较高的安全类别,例如管理自己的帐户或管理用户组的安全类别,这些安全类别将授予主管,等等)
然后,在运行时,我有了workplace的概念(比如Prism中的shell ),在这里我可以动态加载模块(实际上,我使用ServiceLocator模式根据它实现的接口来定位组件,然后为每一类模块(实现相同接口的模块)提供一个控制器,它可以使用枚举字段来确定处理数据所需时间的实际加载模块)。工作场所控制器使用安全提供者,它根据当前用户的访问权限检查要加载的模块的访问权限。
在我的SL4应用程序中,我想使用MVVM模式,因此我希望视图没有代码,并通过ViewModel、ICommands和数据绑定驱动整个功能。因此,我需要一些建议来说明如何完成我在SL4应用程序中描述的这种功能。我与棱镜并没有特别的联系,所以我将考虑是否有另一个SL4框架可以帮助我实现这个目标。
发布于 2011-04-05 19:38:28
您可以尝试以多种方式保护Silverlight应用程序,但最终您无法信任客户端。
我使用了几条指南:
,否则您永远不知道是谁在呼叫。
我只对模块使用授权来减少下载;如果您没有授权使用模块,为什么要下载它?
https://stackoverflow.com/questions/5557360
复制相似问题