Blazor ILoggerProvider как получить имя пользователя? по проекту APIC#

Место общения программистов C#
Ответить
Anonymous
 Blazor ILoggerProvider как получить имя пользователя? по проекту API

Сообщение Anonymous »

Я хочу создать поставщика средств ведения журнала
и иметь возможность получать в нем имя пользователя
как это сделать?
я использую внешний OIDC
так что в API у меня есть только

Код: Выделить всё

 builder.Services
.AddAuthentication("Bearer")
.AddJwtBearer("Bearer", options =>
{
options.Authority = "https://xxxx/auth/realms/dev";
options.TokenValidationParameters.ValidateAudience = false;
});
сейчас так

Код: Выделить всё

builder.Services.AddScoped();
и если я хочу попасть в ctor

Код: Выделить всё

 public DbLoggerProvider(IOptions options, AuthenticationStateProvider asp)
затем при сборке происходит сбой с сообщением, что

Код: Выделить всё

 System.AggregateException
Message=Some services are not able to be constructed
Source=Microsoft.Extensions.DependencyInjection
StackTrace:
at
Microsoft.Extensions.DependencyInjection.ServiceProvider. .ctor(ICollection`1 serviceDescriptors, ServiceProviderOptions options)
at
Microsoft.Extensions.DependencyInjection.ServiceCollection
ContainerBuilderExtensions.BuildServiceProvider
(IServiceCollection services, ServiceProviderOptions options)
at Microsoft.Extensions.Hosting.HostApplicationBuilder.Build()
at Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build()
at Program.$(String[] args) in D:\x\Server\Program.cs:line
153
This exception was originally thrown at this call stack:
[External Code]
Inner Exception 1:
InvalidOperationException: Error while validating the service
descriptor 'ServiceType: Microsoft.Extensions.Hosting.IHostApplicationLifetime Lifetime: Singleton ImplementationType: Microsoft.Extensions.Hosting.Internal.ApplicationLifetime': Unable to resolve service for type 'Microsoft.AspNetCore.Components.Authorization.AuthenticationStateProvider' while attempting to activate 'x.Server.Core.Providers.DbLoggerProvider'.
Inner Exception 2:
InvalidOperationException: Unable to resolve service for type
'Microsoft.AspNetCore.Components.Authorization.
AuthenticationStateProvider' while attempting to activate
'x.Server.Core.Providers.DbLoggerProvider'.
в контроллерах я получаю имя пользователя типа

Код: Выделить всё

  string login = User.Claims.Where(p => p.Type == "preferred_username").First().Value;
как я могу получить этот логин в loggerprovider?
как контроллер получает этот объект пользователя, если не из AuthenticationStateProvider ?
спасибо и привет


Подробнее здесь: https://stackoverflow.com/questions/757 ... pi-project
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»