Получить имя пользователя в файле startup.cs в ядре Asp.net - PullRequest
0 голосов
/ 20 ноября 2018

Я использую Asp.net Core Authorization, и мне нужно получить имя пользователя в файле startup.cs, но я получил значение NULL.

public void ConfigureServices(IServiceCollection services)
{        
    // some code here
    services.AddHttpContextAccessor();
    services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    services.AddHttpContextAccessor();
            services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
            Audit.Core.Configuration.Setup()
                .UseEntityFramework(_ => _
                    .AuditTypeMapper(t => typeof(AuditLog))
                    .AuditEntityAction<AuditLog>((ev, entry, entity) =>
                    {
                        var svcProvider = services.BuildServiceProvider();
                        var httpContext = svcProvider.GetService<IHttpContextAccessor>().HttpContext;

                        entity.AuditData = JsonConvert.SerializeObject(entry);
                        entity.EntityType = entry.EntityType.Name;
                        entity.AuditDate = DateTime.Now;
                        entity.AuditUser = httpContext.User.Identity.Name;
                    })
                .IgnoreMatchedProperties(true));
}

1 Ответ

0 голосов
/ 21 ноября 2018

Я обнаружил проблему, почему httpContext.User.Identity.Name всегда пусто.для каждого запроса к серверу заголовок должен иметь заголовок Authorization , как показано ниже:

Key                Value
Authorization      Bearer ZQ0QZFANcPogvA...

без Bearer httpContext всегда равен нулю.неплохо бы посетить эту ссылку

...