有人可以建议我们如何在视图中显示登录用户的EmailID。我正在使用ASP.NET MVC 5身份。
此致 拉姆
答案 0 :(得分:0)
假设您使用用户的电子邮件作为用户名,那么一旦用户已经过身份验证,您就可以从用户主体Identity.Name
@if (Request.IsAuthenticated) {
<span>@User.Identity.Name</span>
}
这是一种简单的方法。如果您没有使用该电子邮件作为用户名,那么您将必须使用声明附加该信息,然后您可以使用扩展方法来检索它。我有相反的问题。我将电子邮件存储为用户名,并且需要显示登录用户的全名。然后,我必须执行我为您描述的内容,并且必须为DisplayName()
添加自定义IIdentity
扩展名。
答案 1 :(得分:0)
您可以轻松使用 @inject
功能调用来注入UserManager
和SignInManager
(.NET Core中提供此功能)。
在您的视图中添加以下内容:
@inject SignInManager<YourUserIdentity> SignInManager
@inject UserManager<YourUserIdentity> UserManager
注入后,您应该可以使用UserManager
和SignInManager
方法。例如:
@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中。 希望这对任何人都很方便:)