3

Я разработал новый проект, основанный на ядре ASP.Net. Я переместил весь свой EF-код (модели, сопоставления, DbContext) в специальную библиотеку классов DAL, чтобы следовать принципу единой ответственности правил SOLID.Переместить идентификатор в библиотеку классов ASP.Net Core

Однако мне сейчас нужно, чтобы добавить аутентификацию в мой проект и нужно добавить следующее в моих Startup.cs моего веб-проекта, как показано в различных учебных пособий:

services.AddIdentity<ApplicationUser, IdentityRole>() 
     .AddEntityFrameworkStores<ApplicationDbContext>() 
     .AddDefaultTokenProviders(); 

Это будет включать добавление Microsoft .AspNetCore.Identity.EntityFrameworkCore, и мне кажется, что я начал нарушать правило SRP, включив этот пакет в мой веб-проект.

Можно ли переместить весь идентификационный код (Услуги, модели) в качестве библиотеки внешнего класса, как и для DAL.

+0

Да, вы можете. Переместите это на метод расширения во внешней библиотеке и вызовите его в корне композиции, который будет веб-проектом. – Nkosi

+0

После того, как я пытаюсь сделать то же самое, но не понял. – Reza

ответ

0

Поскольку идентификационный код имеет как логику, так и интерфейс (логин/выход из системы, регистр и т. Д.), Это должно быть веб-приложение.

Есть два варианта IMO:

  1. идентичность Сделать как отдельное веб-приложение. Поскольку Asp.Net Core Identity поддерживает OAuth2 (OAuth2 поддерживает интерактивные гранты, такие как предоставление кода), пользователи будут перенаправлены на эту конечную точку веб-приложения во время процесса регистрации/регистрации.
  2. Объединить контроллеры удостоверения с вашим и перемещать идентификационные данные в библиотеку DAL, увидеть это: https://www.codeproject.com/Articles/1156558/ASP-NET-Core-Moving-IdentityDbContext-and-EF-model

Первый вариант дает лучший вариант, если SRP важна для вас. Если перенаправление на другой URL-адрес кажется плохим для вас пользователем, тогда второй вариант может быть лучше.