Для обработки схемы не настроен обработчик аутентификации: Автоматически

Существует много алгоритмов, в зависимости от того, что вы хотите. Обычно они требуют отслеживания частичных сумм. Если вы сохраните только суммы x [k + 1] - x [k], вы получите алгоритм Кахана. Если вы отследите все частичные суммы (следовательно, получив алгоритм O (n ^ 2)), вы получите ответ @dF.

Обратите внимание, что дополнительно к вашей проблеме суммирование чисел отличается Знаки очень проблематичны.

Теперь есть более простые рецепты, чем отслеживание всех частичных сумм:

  • Сортировка чисел перед суммированием, суммирование всех негативов и положительных результатов независимо. Если вы отсортировали числа, отлично, в противном случае вы получите алгоритм O (n log n). Суммируйте по возрастающей величине.
  • Суммируйте по парам, затем парам пар и т. Д.

Личный опыт показывает, что вам обычно не нужны более интересные вещи, чем метод Кахана.

23
задан msmolcic 20 November 2015 в 15:49
поделиться

7 ответов

Попробуйте установить options.AutomaticChallenge = true; в настройках куки, и оно должно работать.

options.AutomaticAuthentication был разделен на options.AutomaticAuthenticate и options.AutomaticChallenge. Если для последнего оставлено значение false, возникает исключение, поскольку промежуточное программное обеспечение для аутентификации не обрабатывает вызов, примененный фильтром авторизации.

28
ответ дан Pinpoint 20 November 2015 в 15:49
поделиться

Надеюсь, это поможет кому-то еще, потому что я потратил много времени на устранение этой ошибки, хотя я установил AutomaticChallenge = true.

Оказывается, вы получите ту же ошибку, если поставить app.UseIdentity(); после app.UseMvc(routes => ...). Теперь, когда я знаю ответ, это очевидно. Это потому, что все это промежуточное ПО происходит в том порядке, в котором вы его добавили.

Это приводит к ошибке « Нет обработчика аутентификации настроен »:

    public void Configure(...)
    {
        app.UseMvc(routes => { routes.MapRoute(...) }; );

        app.UseIdentity();
    }

Это не вызывает ошибку:

    public void Configure(...)
    {
        app.UseIdentity();

        app.UseMvc(routes => { routes.MapRoute(...); });
    }
49
ответ дан Robert Paulsen 20 November 2015 в 15:49
поделиться

Поместите это в метод Configure.

        app.UseIdentity();
20
ответ дан Kumar 20 November 2015 в 15:49
поделиться

Проблема была решена для меня, убедившись, что схема куки была последовательно названа, где бы она ни использовалась. например :

public void ConfigureServices(IServiceCollection services)
{
    // if using IdentityServer4
    var builder = services.AddIdentityServer(options =>
    {
        options.AuthenticationOptions.AuthenticationScheme = Constants.DefaultCookieAuthenticationScheme;
        ...
    })

    services.AddIdentity<MyUser, IdentityRole>(options =>
    {
        options.Cookies.ApplicationCookie.AuthenticationScheme = Constants.DefaultCookieAuthenticationScheme;
        ...
    }
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    ...
    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationScheme = Constants.DefaultCookieAuthenticationScheme,
        AutomaticAuthenticate = false,
        AutomaticChallenge = true
    });
}

И при взаимодействии с промежуточным программным обеспечением аутентификации. например :

await HttpContext.Authentication.SignInAsync(Constants.DefaultCookieAuthenticationScheme, cp);
6
ответ дан TreeAndLeaf 20 November 2015 в 15:49
поделиться

Если вы используете app.UseIdentity(); и некоторое другое промежуточное программное обеспечение для входа, такое как UseFacebookAuthentication, убедитесь, что app.UseFacebookAuthentication() - ПОСЛЕ app.UseIdentity();.

3
ответ дан iuliu.net 20 November 2015 в 15:49
поделиться

В другой возможности отсутствует следующая настройка в Configure

app.UseCookieAuthentication();
.
2
ответ дан maxisam 20 November 2015 в 15:49
поделиться

Хотя соблазнительно поместить большую часть наших настроек конфигурации в файл startup.cs, кажется, что предпочтительный способ сделать это - установить параметры app.UseCookieAuthentication() - sans - в файле startup.cs, а затем поместить все «опции» и другие детали в отдельном файле.

Вроде как то, что мы делали с тем, как файл Global.asax имел указатели на файлы папок App_Start в Asp.Net vBefore.

Я страдал от подобной боли при попытке настроить EF / Sql в startup.cs, и, переместив все «опции» за пределы startup.cs, все работало намного лучше.

ТАКЖЕ: обратите внимание на комментарий Фреди Венгера к вашему вопросу, который указывает на «переименование» многих пространств имен от v -8beta до v -RC1-final.

0
ответ дан Dawid Ferenczy Rogožan 20 November 2015 в 15:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: