2015-11-02 38 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里面,只要你喜欢。 希望这将是方便任何人:)

相关问题