我正在開發一個基於模塊的WPF應用程序,我很好奇如果有一個選項來控制具有用戶權限的模塊導出? 我有2個用戶使用3個模塊的應用程序,每個用戶有權查看或不查看這些模塊,f.ex. 1.用戶有權僅查看前兩個模塊,而第二個用戶有權僅查看1.和3.模塊。 權限存儲在數據庫中,並在同步過程中下載並存儲在xml配置文件中(我認爲這沒有問題)。 模塊在每個模塊項目中輸出爲:[Export(typeof(MyBestViewModule))]
。 或者也許有一些其他的方式來控制這些模塊的用戶權限?最好的實踐或更好的東西,也許有人已經做了,可以分享經驗和想法,因爲我沒有。通過用戶權限在WPF中控制模塊導出
0
A
回答
0
假設,您使用MEF,還有通過FilteredCatalog
一種方法來過濾模塊:
public class ViewModulesCatalog : FilteredCatalog
{
public ViewModulesCatalog(ComposablePartCatalog inner, IPermissionsProvider permissionsProvider)
: base(inner, part => part.ExportDefinitions.All(def => permissionsProvider.IsAllowed(def)))
}
其中IPermissionsProvider
是你的自定義服務,來檢查當前用戶的權限的合同。事情是這樣的:
public interface IPermissionsProvider
{
bool IsAllowed(ExportDefinition def);
}
更新。
如果您使用棱鏡+ MefBootstrapper
,你重寫方法ConfigureAggregateCatalog
:
// suppose assemblies with modules are located in "modules" subdir
var directoryCatalog = new DirectoryCatalog(@".\modules");
// let's filter directoryCatalog to get allowed modules
var permissionsProvider = // ... obtain provider reference here
var modulesCatalog = new ViewModulesCatalog(directoryCatalog, permissionsProvider);
return new AggregateCatalog(modulesCatalog);
相關問題
- 1. Laravrl5-整個模塊控制器的用戶權限
- 2. 如何通過用戶管理模塊控制自定義控制器的訪問權限?
- 3. 用戶權限控制
- 4. 導出用戶權限?
- 5. 控制Codeigniter中的用戶權限
- 6. DNN 6用戶級別模塊權限
- 7. Django模塊的用戶權限
- 8. 使用VLine時控制用戶權限
- 9. 限制用戶在GitLab中的權限?
- 10. WPF C#多用戶權限
- 11. Django管理員 - 通過權限限制用戶查看
- 12. 某些用戶的控制權限
- 13. 通過的NodeJS現有模塊在NPM庫導出模塊
- 14. 限制在戶外訪問模塊部署控制檯5.0.d
- 15. 擴展「類」並通過模塊導出
- 16. 如何使用控制模塊WPF
- 17. CodeIgniter通過會話的用戶權限
- 18. Drupal模塊權限
- 19. Python模塊權限
- 20. 通過權限限制訪問
- 21. 在C#窗口應用程序中控制用戶權限
- 22. 通過控制器的導軌模型
- 23. 用戶控制未在WPF
- 24. FocusLost在用戶控制[WPF]
- 25. 在哪裏可以控制Django中的權限式查看?在URL(通過通用視圖),模板或視圖?
- 26. 當在web2py控制器中導入py4j模塊時出現TypeError
- 27. Ansible腳本模塊 - 控制套接字權限被拒絕
- 28. 如何通過控制器導航用戶關係用戶
- 29. Wpf用戶控制規模問題
- 30. IE權限控制
這聽起來不像一個WPF的問題,但更多的東西做與IOC/DependencyInjection架構 - 統一/ MEF或像棱鏡。不太清楚你使用的是什麼。 –