在MVC 5中显示登录用户的电子邮件

时间:2015-11-02 22:06:01

标签: asp.net-mvc-5

有人可以建议我们如何在视图中显示登录用户的EmailID。我正在使用ASP.NET MVC 5身份。

此致 拉姆

2 个答案:

答案 0 :(得分:0)

假设您使用用户的电子邮件作为用户名,那么一旦用户已经过身份验证,您就可以从用户主体Identity.Name

访问该名称
@if (Request.IsAuthenticated) {

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

}

这是一种简单的方法。如果您没有使用该电子邮件作为用户名,那么您将必须使用声明附加该信息,然后您可以使用扩展方法来检索它。我有相反的问题。我将电子邮件存储为用户名,并且需要显示登录用户的全名。然后,我必须执行我为您描述的内容,并且必须为DisplayName()添加自定义IIdentity扩展名。

答案 1 :(得分:0)

您可以轻松使用 @inject 功能调用来注入UserManagerSignInManager(.NET Core中提供此功能)。

在您的视图中添加以下内容:

@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中。 希望这对任何人都很方便:)