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



我试图在Blazor WebAssembly 3.2的默认模板中获得一个自定义属性,但在调试上下文时。blazor.server部分的User.Identity.Name为null。我可以看到用户的上下文。User.Identity.IsAUthenticated为true,但所有其他属性似乎为null或为空。

所以要复制:

  1. 创建一个新的Blazor WebAssembly 3.2项目
  2. 执行添加迁移inital+数据库更新
  3. 启动blazor.server项目并注册用户并登录
  4. 在Weatherforecast的Get方法上设置断点
  5. 上下文。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);
...

最新更新