如何在 .NetCore 中托管的 Blazor 3.2 Webassembly 的 ApplicationUser 中实现自定义属性

How to implement custom properties in ApplicationUser in Blazor 3.2 Webassembly Hosted in .NetCore

我试图在 Blazor WebAssembly 3.2 的默认模板中获取自定义 属性,但是当我在 blazor.server 部分调试 context.User.Identity.Name 时,它为空。我可以看到用户 context.User.Identity.IsAUthenticated 为真,但所有其他属性似乎为 null 或空。

因此要重现:

  1. 创建一个新的 Blazor WebAssembly 3.2 项目
  2. 执行初始添加迁移 + 数据库更新
  3. 启动blazor.server项目并注册用户并登录
  4. 在 Weatherforecast 的 Get 方法上设置断点。
  5. context.User.Identity.Name为空

任何人都得到了这方面的指南,或提示在哪里看。谢谢

注意:模板将电子邮件存储在数据库中的电子邮件和名称字段中。

Startup.cs服务器中。将这些选项添加到 AddApiAuthorization.

 services.AddIdentityServer()        
    .AddApiAuthorization<ApplicationUser, ApplicationDbContext>(options =>
    {
        options.IdentityResources["openid"].UserClaims.Add("name");
        options.ApiResources.Single().UserClaims.Add("name");                 
    });

在你的控制器中

Public async Task<IEnumerable<WeatherForecast>> Get()
{
    var userName = User.Identity.Name;
    var applicationUser = await userManager.FindByNameAsync(userName);
...