Ни один обработчик проверки подлинности не настроен для обработки схемы Microsoft.AspNet.Identity.Application.

Я использую ASP.NET Identity с ядром ASP.NET, и у меня есть:

services.AddIdentity<User, Role>();

Это отлично работает, когда я вхожу в систему. Но затем я попробовал эту настройку:

services
  .AddIdentity<User, Role>(x => {
    x.Cookies = new IdentityCookieOptions {             
      ApplicationCookie = new CookieAuthenticationOptions {
        AccessDeniedPath = new PathString("/signin"),
        AuthenticationScheme = "cookies",
        AutomaticAuthenticate = true,
        AutomaticChallenge = true,
        CookieName = "_ath",
        LoginPath = new PathString("/signin"),
        LogoutPath = new PathString("/signout")
      }
    };
    })
    .AddEntityFrameworkStores<Context, Int32>()
    .AddDefaultTokenProviders();          

При этом я получаю следующую ошибку:

No authentication handler is configured to handle the scheme: 
Microsoft.AspNet.Identity.Application    

Обратите внимание, что у меня есть AuthenticationScheme = "cookies", AutomaticAuthenticate = true и AutomaticChallenge = true.

У меня также есть следующее в методе Starttup/Configure:

  applicationBuilder
    .UseIdentity()
    .UseMvc(routes => { routes.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}"); })

Поэтому я полагаю, что использую порядок по умолчанию...

Кто-нибудь знает, что мне не хватает?


person Miguel Moura    schedule 29.03.2016    source источник


Ответы (2)


У меня была точно такая же ошибка, и мне удалось исправить ее, добавив поставщика токенов по умолчанию, как показано ниже:

services.AddIdentity<User, IdentityRole>()
            .AddDefaultTokenProviders();
person user3012760    schedule 01.04.2016
comment
К сожалению, это не помогает мне, потому что у меня уже есть это. Я обновил код на свой вопрос, чтобы отразить его... - person Miguel Moura; 01.04.2016

Не устанавливайте authenticationScheme напрямую, или, если вы это сделаете, вам нужно убедиться, что вы также обновили соответствующие параметры внутри IdentityOptions, чтобы все они совпадали.

Сообщение об ошибке означает, что удостоверение, вероятно, по-прежнему настроено на использование значения по умолчанию «Microsoft.AspNet.Identity.Application» где-то, и вы изменили промежуточное ПО cookie, чтобы оно использовало другую схему, которая не соответствует.

person Hao Kung    schedule 04.04.2016