В моем проекте есть интерфейсный интерфейс и API в том же решении, поэтому я создаю настраиваемое промежуточное программное обеспечение для проверки подлинности, которое предназначено для авторизации только контроллеров API, поскольку Front-end-контроллеры используют Identity ,Схема промежуточного программного обеспечения Asp.Net Core Конфигурация промежуточного программного обеспечения
Я устанавливаю опцию AutomaticAuthenticate ложной идентичности на Startup.cs как этот
services.AddIdentity<ApplicationUser, IdentityRole>(config =>
{
config.User.RequireUniqueEmail = true;
config.Password.RequiredLength = 4;
config.Cookies.ApplicationCookie.AuthenticationScheme = "Cookie";
config.Cookies.ApplicationCookie.AutomaticAuthenticate = false;
}).AddEntityFrameworkStores<DbContext>()
.AddDefaultTokenProviders();
И для моего пользовательского промежуточного слоя я реализовал собственные варианты, и я сделал это
app.UseApiAuthorizationMiddleware(new ApiAuthenticationOptions
{
AuthenticationScheme = "Api",
AutomaticAuthenticate = false
});
Теперь, когда Я стараюсь использовать
[Authorize(AuthenticationSchemes = "Api")]
В моем диспетчере Visul Studio говорит мне, что Auth Не удалось найти идентификационные коды, и мне не хватает и сборки или ссылки. Быстрый инструмент Action говорит мне, чтобы добавить
"System.Net.Primitives": "4.0.11-rc2-24027"
, но я в конечном итоге с версии 4.0.10 и он не компилируется ... Я не уверен, если то, что я сделал до сих пор является хорошим или, если на самом деле здесь есть проблема.
Надеюсь, это ясно.
благодаря
Я предполагаю, что вопрос стороны, если это способ сделать Identity не автоматическим? –
Вы вызываете app.UseApiAuthorizationMiddleware перед app.UseIdentity? Получает ли промежуточное программное обеспечение наследование AuthenticationMiddleware? – Set
Я вызываю его после и я наследую от authenticationmiddleware –