基于用户权限的MEF组件

时间:2011-09-24 21:53:56

标签: c# authentication user-controls mef

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

我想要达到的目标是

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

任何正确的方向将不胜感激

4 个答案:

答案 0 :(得分:4)

我通过使用模块ID的元数据属性和具有权限的表来完成此操作。

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

此博客文章描述了所涉及的所有MEF。

http://blogs.microsoft.co.il/blogs/bnaya/archive/2010/01/20/mef-for-beginner-metadata-part-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=Guide

MEF Plugins with Security and Profiles Efficency

MEF with ImportMany and ExportMetadata

这将显示如何从xaml

导入

http://blogs.microsoft.co.il/blogs/bnaya/archive/2010/03/20/mef-for-beginner-import-from-xaml-part-11.aspx

答案 1 :(得分:2)

文章here详细介绍了如何使用AOP将安全问题注入MEF。这可能是这样做的一种方式 - 我没有在MEF中找到任何可以在其他地方使用这种功能的东西。

答案 2 :(得分:0)

我认为PRISM可以完全按照你所描述的那样做。看看this Code Project article。您可以创建多个模块目录(根据用户权限),并按照Here所述从XML动态加载目录:

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

答案 3 :(得分:0)

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

Cinch协助一些MVVM的苦差事,同时允许你通过MeffedMVVM或Prism来利用MEF。