Я создал Asp. Net Размещенное в Core приложение Blazor для веб-сборки 3.2.0 Preview 3 с опцией аутентификации учетных записей в приложении. Затем я добавил несколько дополнительных атрибутов в класс ApplicationUser и перенес эти изменения в базу данных. Затем я реализовал собственную фабрику утверждений следующим образом:
public class MyCustomUserClaimsPrincipalFactory : UserClaimsPrincipalFactory<ApplicationUser>
{
public MyCustomUserClaimsPrincipalFactory(
UserManager<ApplicationUser> userManager,
IOptions<IdentityOptions> optionsAccessor)
: base(userManager, optionsAccessor)
{
}
protected override async Task<ClaimsIdentity> GenerateClaimsAsync(ApplicationUser user)
{
var identity = await base.GenerateClaimsAsync(user);
identity.AddClaim(new Claim(ClaimTypes.GivenName, user.FirstName ?? string.Empty));
.....
return identity;
}
}
и зарегистрировал фабрику утверждений в серверном приложении следующим образом:
services.AddDefaultIdentity<ApplicationUser>(options => options.SignIn.RequireConfirmedAccount = true)
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddClaimsPrincipalFactory<MyCustomUserClaimsPrincipalFactory>();
Однако, когда я перечисляю утверждения в клиенте В компоненте веб-приложения я не вижу никаких дополнительных утверждений, добавленных на фабрике пользовательских утверждений. Код, который я использую для перечисления заявок:
<AuthorizeView>
<Authorized>
<ul>
@foreach (var claim in context.User.Claims)
{
<li><span>@claim.Type</span><span>@claim.Value</span></li>
}
</ul>
</Authorized>
</AuthorizeView>
Я проверил, что вызывается код фабрики заявок. Как получить дополнительные претензии в клиентском веб-приложении?
Редактировать: я даже пытался использовать ClaimsTransformer (как предложено здесь ), но я все еще не вижу дополнительных претензий