Расположение вызова UseRequestLocalization() при запуске

У меня есть индивидуальная реализация IRequestCultureProvider, Этот провайдер проверяет, не вошел ли пользователь в систему, затем устанавливает текущую культуру, в противном случае он не устанавливает культуру. Другие поставщики культур установят текущую культуру, если пользователь вошел в систему.

В методе Configure я использую UseRequestLocalization() после аутентификации промежуточное ПО, чтобы HttpContext.User собственность заселена. Тем не менее, собственность httpContext.User.Identity.IsAuthenticated никогда не бывает правдой, и это всегда устанавливает культуру.

Журналы показывают, что поставщик культуры устанавливает культуру перед вызовом промежуточного программного обеспечения для аутентификации маркера канала-носителя, который должен заполнить HttpContext.User имущество.

Я не понимаю почему.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider serviceProvider)
{
    var localizationOptions = app.ApplicationServices.GetService<IOptions<RequestLocalizationOptions>>();

    var defaultRequestCultureProvider = app.ApplicationServices.GetService<DefaultRequestCultureProvider>();

    localizationOptions.RequestCultureProviders.Insert(1, defaultRequestCultureProvider);

    app.Map("/api", webApiApp => ConfigureWebApiBranch(webApiApp,localizationOptions.Value));

    // Removed for brevity

}


private void ConfigureWebApiBranch(IApplicationBuilder webApi, RequestLocalizationOptions localizationOptions)
{
    webApi.UseCors(Constants.CorsPolicyName);

    webApi.UseAuthentication();

    webApi.UseRequestLocalization(localizationOptions);

    webApi.UseMvc();

}

Я использую промежуточное программное обеспечение для аутентификации токенов на предъявителя IdentityServer4.

1 ответ

К запросу не был прикреплен файл cookie, поэтому проверка подлинности не прошла успешно.