Расположение вызова 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, поэтому проверка подлинности не прошла успешно.