我使用 Visual Studio 2022 ASP.NET React 專案模板創建了一個 React 應用程式。我能夠在注冊期間修改專案以添加一些自定義欄位。這些客戶欄位包括名字和姓氏。
我想替換導航選單中每個頁面上顯示的電子郵件:
我設法在身份框架中搭建的 Razor 頁面上成功替換了它。

但我似乎無法弄清楚如何在 React 方面做到這一點。非常感謝您可以指出我的任何檔案。
uj5u.com熱心網友回復:
轉到ClientApp/src/components/api-authorization/LoginMenu.js并將populateState方法更改為:
async populateState() {
const [isAuthenticated, user] = await Promise.all([authService.isAuthenticated(), authService.getUser()])
this.setState({
isAuthenticated,
userName: user && `${user.given_name} ${user.family_name}`
});
}
要將FirstNameandLastName屬性映射到given_nameandfamily_name宣告,您可以使用UserClaimsPrincipalFactory:
public class AppUserClaimsPrincipalFactory : UserClaimsPrincipalFactory<ApplicationUser, IdentityRole>
{
public AppUserClaimsPrincipalFactory(
UserManager<ApplicationUser> userManager,
RoleManager<IdentityRole> roleManager,
IOptions<IdentityOptions> optionsAccessor)
: base(userManager, roleManager, optionsAccessor)
{
}
protected override async Task<ClaimsIdentity> GenerateClaimsAsync(ApplicationUser user)
{
var identity = await base.GenerateClaimsAsync(user);
identity.AddClaim(new Claim(JwtClaimTypes.GivenName, user.FirstName));
identity.AddClaim(new Claim(JwtClaimTypes.FamilyName, user.LastName));
identity.AddClaim(new Claim(JwtClaimTypes.BirthDate, user.DateOfBirth.ToString("yyyy-MM-dd"), ClaimValueTypes.Date));
return identity;
}
}
并Startup.cs添加:
services.AddScoped<IUserClaimsPrincipalFactory<ApplicationUser>, AppUserClaimsPrincipalFactory>();
假設您已定義ApplicationUser為:
public class ApplicationUser : IdentityUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/511759.html
下一篇:如何獲得年總銷售額
