基于用户权限的MEF组件

本文关键字:权限 MEF 组件 用户 于用户 | 更新日期: 2023-09-27 18:09:30

几个月前我迈出了MEF的第一步,直到现在一切似乎都很好。我想要做的是在我的实际应用程序中使用MEF并根据认证用户的权限加载或显示UI组件。我正在为诊所开发患者管理系统,我想实现基于用户类型显示MEF组成的UI组件的场景。例如,如果经过身份验证的用户是医生,我想显示特定的组件并隐藏其他组件。

我想要达到的是像

ISystemComponent具有一些属性和方法,因此管理员可以控制每个用户的访问级别,并且基于DB记录的MEF组合控件将显示给最终用户。我还考虑在导出组件时使用元数据接口,因此使用此接口如何获得所需的结果?

任何正确的方向都会受到欢迎

基于用户权限的MEF组件

我通过使用模块ID的元数据属性和具有权限的表来做到这一点。

在接口上执行ImportMany操作,然后使用反射根据元数据属性对其进行过滤,并与表中的权限进行比较。

这篇博文描述了所有涉及的MEF。

http://blogs.microsoft.co.il/blogs/bnaya/archive/2010/01/20/mef - -初学者-元数据部分8. - aspx

其他链接…

http://blogs.microsoft.co.il/blogs/bnaya/archive/2010/01/09/mef-for-beginner-toc.aspx

http://mef.codeplex.com/wikipage?title=Exports%20and%20Metadata& referringTitle =指南

具有安全性和配置文件效率的MEF插件

带有ImportMany和ExportMetadata的MEF

下面将展示如何从xaml 导入

http://blogs.microsoft.co.il/blogs/bnaya/archive/2010/03/20/mef - -初学者进口从- 11. - xaml部分aspx

本文详细介绍了如何使用AOP向MEF注入安全关注点。这可能是这样做的一种方式-我在MEF中没有发现任何允许这种功能的地方。

我认为PRISM完全可以做到您所描述的。看看这篇Code Project文章。您可以创建几个模块目录(根据用户权限),并从XML动态加载目录,如下所述:

var catalog = ModuleCatalog.CreateFromXaml(new Uri("catalog.xaml", 
                                                 UriKind.Relative));

我在WPF/MVVM中实现了这一点,使用了将控件映射到角色和视图权限的ch和后端SQL表。这允许您通过视图模型控制权限,并在任何时候更改可见性。

Cinch帮助您完成MVVM的一些繁琐工作,同时允许您通过MeffedMVVM或Prism利用MEF。