AddAuthentication вызывает havo c с AddDefaultIdentity в As pnet Core 3.1 - PullRequest
0 голосов
/ 01 мая 2020

Я создал базовый веб-сайт pnet с локальным хранилищем удостоверений.

services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
                .AddEntityFrameworkStores<ApplicationDbContext>();

Работает нормально. Затем я добавил социальные аутентификации в соответствии с руководством, и все работает нормально.

Затем я добавил аутентификацию api, как в документации Xamarin.Essentials. В нем говорится, что перед социальной аутентификацией я должен выполнить AddAuthentication.

services.AddAuthentication(o =>
{
    o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
}).AddCookie();

Когда я добавляю эти строки, рабочий логин больше не работает. Страницы выглядят так, как будто они работают, но пользователь никогда не находится в состоянии входа в систему.

Что происходит с AddDefaultIdentity при добавлении AddAuthentication?

1 Ответ

1 голос
/ 01 мая 2020

В вашем приложении может быть только одна Стандартная схема аутентификации. AddDefaultIdentity добавляет аутентификацию cook ie в качестве схемы аутентификации по умолчанию, и это то, с чем работает Identity.

Когда вы добавляете новую аутентификацию для API, вы переопределяете DefaultScheme здесь o.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;, который Это то, с чем работает Identity.

Если вы хотите новую схему аутентификации для API, вам нужно просто добавить аутентификацию без установки аутентификации по умолчанию и дать ей имя,

services.AddAuthentication()
    .AddCookie("A_NEW_SCHEME_NAME", ... );

и добавить AuthorzieAttribute для этой схемы аутентификации на ваших контроллерах / действиях.

[Authorize(AuthenticationSchemes = "A_NEW_SCHEME_NAME")]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...