c# – 登录Prism WPF应用程序
发布时间:2020-12-16 02:01:11 所属栏目:百科 来源:网络整理
导读:我正在使用PRISM开发 WPF应用程序,我需要实现在 Shell之前加载的Login功能. 最好的方法是什么?将登录视为模块?将它与壳牌一起放在主项目中? 如果登录正确,我需要存储一些用户信息(名称,角色等),以便稍后在整个应用程序中使用它(在Shell中以及在模块中).我
我正在使用PRISM开发
WPF应用程序,我需要实现在
Shell之前加载的Login功能.
>最好的方法是什么?将登录视为模块?将它与壳牌一起放在主项目中? 提前致谢. 解决方法
本讨论描述了在shell之前显示登录表单的解决方案:
http://compositewpf.codeplex.com/discussions/29570
至于如何存储用户的详细信息,您可以使用.Net GenericPrincipal和GenericIdentity类.它们允许您表示有关用户的“基本”信息,例如用户名和角色.然后可以针对当前线程存储主体/标识,因此您无需担心创建某种静态/单例类来访问详细信息.检查当前用户的角色成员资格也变得很容易. 创建对象并分配给当前线程,如下所示: – string[] roles = { "User","Admin" }; Thread.CurrentPrincipal = new GenericPrincipal( new GenericIdentity("Joe"),roles); 然后,只要您想访问当前登录用户的详细信息: – public string GetUsername() { var principal = Thread.CurrentPrincipal; var identity = principal == null ? null : principal.Identity; return identity == null ? null : identity.Name; } public bool IsInRole(string role) { var principal = Thread.CurrentPrincipal; return principal == null ? false : principal.IsInRole(role); } 如果GenericPrincipal和GenericIdentity不合适,我会创建一个具有必要属性(名称,角色等)的单例类,这些属性可以传递给应用程序的其他部分,例如:使用IoC容器.静态类是一种更简单的解决方案(无需传递),但静态可以使单元测试更加棘手. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |