Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于用户权限的MEF组件_C#_Authentication_User Controls_Mef - Fatal编程技术网

C# 基于用户权限的MEF组件

C# 基于用户权限的MEF组件,c#,authentication,user-controls,mef,C#,Authentication,User Controls,Mef,几个月前我向MEF迈出了第一步,直到现在一切似乎都很好。我想做的是在我的真实应用程序中使用MEF,然后根据经过身份验证的用户权限加载或显示UI组件。我正在为诊所开发患者管理系统,我想实现这样一个场景,即根据用户类型显示MEF组成的UI组件。例如,如果经过身份验证的用户是医生,我希望显示特定组件并隐藏其他组件 我想要达到的是 ISystemComponent具有一些属性和方法,因此管理部门可以控制每个用户访问级别,并根据数据库记录向最终用户显示MEF组合控件。我还考虑在导出组件时使用元数据接口,那

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

我想要达到的是

ISystemComponent
具有一些属性和方法,因此管理部门可以控制每个用户访问级别,并根据数据库记录向最终用户显示MEF组合控件。我还考虑在导出组件时使用元数据接口,那么如何使用它来获得所需的结果呢


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

本文详细介绍了如何使用AOP将安全问题注入MEF。这可能是实现这一点的一种方法——我还没有在MEF中找到任何东西可以在其他地方实现这种功能。

我认为PRISM可以完全按照您所描述的做。看一看。您可以创建多个模块目录(根据用户权限),并从XML动态加载目录,如下所述:


为此,我使用了模块ID的元数据属性和具有权限的表

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

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

其他链接..

这将显示如何从xaml导入


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


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

目标表示层?WPF或WinForms?不是WinForms,而是WPF或它也可能是silverlight。您有几个框架可以完全满足您的需要,例如PRISM(可能使用MEF或其他IOC容器)我不使用PRISM,也不打算在我们的项目中使用它。我们从一开始就构建了很多东西,因为这是真正的企业系统。谢谢你,这些链接对我真的很有帮助。我确实想过使用元数据,并在属性内部使用某种集合管理访问策略和while组合检查当前经过身份验证的用户是否具有相同的权限,并且仅在这种情况下向用户显示插件
var catalog = ModuleCatalog.CreateFromXaml(new Uri("catalog.xaml", 
                                                 UriKind.Relative));