基于用户权限的MEF组件
本文关键字:权限 MEF 组件 用户 于用户 | 更新日期: 2023-09-27 18:09:30
几个月前我迈出了MEF的第一步,直到现在一切似乎都很好。我想要做的是在我的实际应用程序中使用MEF并根据认证用户的权限加载或显示UI组件。我正在为诊所开发患者管理系统,我想实现基于用户类型显示MEF组成的UI组件的场景。例如,如果经过身份验证的用户是医生,我想显示特定的组件并隐藏其他组件。
我想要达到的是像
ISystemComponent
具有一些属性和方法,因此管理员可以控制每个用户的访问级别,并且基于DB记录的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.aspxhttp://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。