使用 MEF 通过导航框架处理授权/用户访问
我想我现在开始了解如何使用 MEF 了。但我仍然不确定利用 MEF 来控制用户访问的最佳方法是什么。
例如:我使用 silverlight 导航框架。如果特定用户拥有每个导航菜单项的权限(即角色、声明),则每个导航菜单项要么被禁用,要么根本不显示。
现在我知道我可以设置 IsEnabled 属性来禁用它们,但我希望有一种更优雅/灵活的方法。
总结一下: - 每个菜单项都需要是 MEF 模块扩展(因此无法访问它的用户甚至不会下载它)。
I think im starting to understand how to use MEF now. But im still not sure what the best way of utilizing MEF in order to handle controlling user access.
For example: Im using the silverlight navigation framework. And each navigation menu item is to be either disabled or not shown at all if a particular user has rights (i.e. roles, claims) for it.
Now I know that I could set the IsEnabled attributes to disable them, but im hoping for a more elegant/flexible approach.
To sum this up:
- Each menu item needs to be a MEF module extension (so it wouldnt even be download for users with no access to it).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以向模块或 MEF 部件提供元数据。
例如,元数据可以包含角色或许可证密钥...
并且使用
Lazy
您可以决定是否要实例化模块或部件...You can provide Metadata to a module or MEF-Part.
The Metadata can contain a Role or a license key for example...
And with
Lazy<T,TMeta>
you can decide whether you want to intanciate the module or part...如果您想要采用这样的设计:如果用户无权访问扩展,则实际上不下载扩展,则可以将每个扩展放在单独的 XAP 中,并且仅下载用户有权访问的 XAP(与 DeploymentCatalog)。需要有一个 XAP 列表以及每个 XAP 所需的权限,要么嵌入到主 XAP 中,要么作为服务器上的某种服务。
If you want to go with a design where you actually don't download an extension if the user doesn't have access to it, you can put each extension in a separate XAP, and only download the XAPs that the user has access to (with the DeploymentCatalog). There would need to be a list of XAPs and the rights needed for each one, either embedded in your main XAP or as a service of some sort on the server.