Как добавить дополнительные претензии в приложение Blazor WebAssembly 3.2.0 Preview 3 - PullRequest
3 голосов
/ 13 апреля 2020

Я создал 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 (как предложено здесь ), но я все еще не вижу дополнительных претензий

...