簡體   English   中英

登錄Prism WPF應用程序

[英]Login in Prism WPF application

我正在使用PRISM開發WPF應用程序,我需要實現在Shell之前加載的Login功能。

  1. 最好的方法是什么? 將登錄視為模塊? 將它與殼牌一起放在主項目中?

  2. 如果登錄正確,我需要存儲一些用戶信息(名稱,角色等),以便稍后在整個應用程序中使用它(在Shell中以及在模塊中)。 我應該在哪里以及如何存儲這些信息?

提前致謝。

本討論描述了在shell之前顯示登錄表單的解決方案: http//compositewpf.codeplex.com/discussions/29570

至於如何存儲用戶的詳細信息,您可以使用.Net GenericPrincipalGenericIdentity類。 它們允許您表示有關用戶的“基本”信息,例如用戶名和角色。 然后可以針對當前線程存儲主體/標識,因此您無需擔心創建某種靜態/單例類來訪問詳細信息。 檢查當前用戶的角色成員資格也變得很容易。

創建對象並分配給當前線程,如下所示: -

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);
}

如果GenericPrincipalGenericIdentity不合適,我會創建一個單例類,其中包含必要的屬性(名稱,角色等),這些屬性可以傳遞給應用程序的其他部分,例如使用IoC容器。 靜態類是一種更簡單的解決方案(無需傳遞),但靜態可以使單元測試更加棘手。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM