在布局页面中使用 Identity 2.0 获取附加字段

Getting additional fields with Identity 2.0 in Layout page

我有一个问题,我认为这很容易解决,但现在变成了一个大问题。

在我的 _Layout.cshtml 页面上,我只想显示当前用户的名字和姓氏。这存储在 AspNetUsers 数据库 table 的 Name 列中。我目前在布局页面上有这个:

<h5>@Context.User.Identity.Name</h5>

这仅显示该用户的用户名,Name 是唯一可用的 属性。有没有办法重载身份以暴露用户的全名?

如果它只在一个页面上,这不会是一个大问题,那么我可以在控制器中加载该用户数据,但它需要在布局中的所有页面之间共享。

检查信息是否存储为声明。然后你可以像这样通过声明身份访问它:

@((ClaimsIdentity)Context.User.Identity).FindFirstValue("fullnameclaimname");

如果声明不存在(检查ClaimsIdentityClaims 属性)您可以在GenerateUserIdentityAsync中验证用户时添加它ApplicationUserclass。在此方法中,您从 ApplicationUser.

生成 ClaimsIdentity