[英]Login in Prism WPF application
我正在使用PRISM開發WPF應用程序,我需要實現在Shell之前加載的Login功能。
最好的方法是什么? 將登錄視為模塊? 將它與殼牌一起放在主項目中?
如果登錄正確,我需要存儲一些用戶信息(名稱,角色等),以便稍后在整個應用程序中使用它(在Shell中以及在模塊中)。 我應該在哪里以及如何存儲這些信息?
提前致謝。
本討論描述了在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容器。 靜態類是一種更簡單的解決方案(無需傳遞),但靜態可以使單元測試更加棘手。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.