gpt4 book ai didi

asp.net-mvc - User.Identity.Name 返回 UserName 而不是 Name

转载 作者:行者123 更新时间:2023-12-04 02:04:24 24 4
gpt4 key购买 nike

我想在 _LoginPartial 中的导航栏中显示用户名而不是用户名 目前我正在使用 User.Identity.GetUserName() 作为用户名,但现在我想显示用户名当前用户。

_LoginPartial 由 Startup.Auth.cs 调用,因此我无法在后端运行查询并获取我的用户名,因此我只能使用可由 View 中的 razor 运行的内置函数。

我已经尝试了所有这些方法,但它们都给我用户名而不是用户名。

<small>@System.Threading.Thread.CurrentPrincipal.Identity.Name</small>
<small>@User.Identity.Name</small>
<small>@threadPrincipal.Identity.Name</small>
<small>@System.Web.HttpContext.Current.User.Identity.Name</small>

如何获取用户名而不是用户名

这是用户表

ID
Email
EmailConfirm
Password
Security
PhoneNumber
PhoneNumberConfirm
TwoFactorEnable
LockoutEndDateUtc
LockoutEnable
AccessFailedCount
UserName
Name
Status
Image

最佳答案

由于 Name 是 ApplicationUser(扩展的 IdentityUser)的自定义字段,您需要添加该字段作为声明。

如果您使用模板 来设置Identity,那么您会在IdentityModels.cs 中找到ApplicationUser 类。在这里,我添加了一个字段“名称”并将其添加为声明:

public class ApplicationUser : IdentityUser
{
public string Name { get; set; }

public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);

// Add custom user claims here
userIdentity.AddClaim(new Claim("CustomName", Name));

return userIdentity;
}
}

此代码将添加一个具有名称值的声明“CustomName”。

在您看来,您现在可以阅读声明。这是 _LoginPartial 中的示例:

<ul class="nav navbar-nav navbar-right">
<li>
@{ var user = (System.Security.Claims.ClaimsIdentity)User.Identity; }
@Html.ActionLink("Hello " + user.FindFirstValue("CustomName") + "!", "Index", "Manage", routeValues: null, htmlAttributes: new { title = "Manage" })
</li>

您可以添加其他自定义字段以及声明。

关于asp.net-mvc - User.Identity.Name 返回 UserName 而不是 Name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44602626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com