2015-11-02 64 views

回答

0

假設你正在使用的用戶的電子郵件作爲用戶名,然後一旦用戶已經過驗證,你可以從用戶主要訪問名稱Identity.Name

@if (Request.IsAuthenticated) { 

    <span>@User.Identity.Name</span> 

} 

這是簡單的方法。如果您沒有使用電子郵件作爲用戶名,那麼您將不得不使用聲明附加該信息,然後您可以使用擴展方法來檢索它。我有相反的問題。我將電子郵件存儲爲用戶名,並且需要獲取登錄用戶的全名才能顯示。然後,我必須按照我描述的內容進行操作,並且必須爲IIdentity添加自定義DisplayName()擴展名。

0

您可以輕鬆地使用@inject功能調用注入兩UserManagerSignInManager(在.NET核心提供此功能)。

在您的視圖中添加以下內容:

@inject SignInManager<YourUserIdentity> SignInManager 
@inject UserManager<YourUserIdentity> UserManager 

注射後,你應該能夠UserManagerSignInManager方法來工作。例如:

@if (SignInManager.IsSignedIn(User)) 
{ 
    <a asp-area="" asp-controller="Manage" asp-action="Index" title="Manage">Hello @UserManager.GetUserName(User)</a> 
} 
else 
{ 
} 

用於傳遞User對象時,你需要引用登錄用戶當前留意。

在你的情況,如果你想獲得登錄的郵箱地址,你可以使用以下方法:

var loggedInUserName = @UserManager.GetUserName(User); 

var loggedInEmail = await UserManager.GetEmailAsync(
     UserManager.Users.FirstOrDefault(u => u.UserName == loggedInUserName) 
     ); 

或者只是保持一個ViewBag裏面,只要你喜歡。 希望這將是方便任何人:)

相關問題